* [PATCH 0/3] Add support for Pine64 PinePhone Linux Smartphone
@ 2020-02-23 17:29 Ondrej Jirman
2020-02-23 17:29 ` [PATCH 1/3] arm64: dts: sun50i-a64: Add i2c2 pins Ondrej Jirman
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Ondrej Jirman @ 2020-02-23 17:29 UTC (permalink / raw)
To: linux-sunxi, Rob Herring, Maxime Ripard, Chen-Yu Tsai
Cc: Ondrej Jirman, Mark Rutland, Corentin Labbe,
Georgii Staroselskii, Samuel Holland, Martijn Braam, Luca Weiss,
Bhushan Shah, Icenowy Zheng, devicetree, linux-arm-kernel,
linux-kernel
This series adds an initial support for Pine64
PinePhone.
Please take a look.
thank you and regards,
Ondrej Jirman
Ondrej Jirman (3):
arm64: dts: sun50i-a64: Add i2c2 pins
dt-bindings: arm: sunxi: Add PinePhone 1.0 and 1.1 bindings
arm64: dts: allwinner: Add initial support for Pine64 PinePhone
.../devicetree/bindings/arm/sunxi.yaml | 10 +
arch/arm64/boot/dts/allwinner/Makefile | 2 +
.../allwinner/sun50i-a64-pinephone-1.0.dts | 11 +
.../allwinner/sun50i-a64-pinephone-1.1.dts | 11 +
.../dts/allwinner/sun50i-a64-pinephone.dtsi | 385 ++++++++++++++++++
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 5 +
6 files changed, 424 insertions(+)
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
--
2.25.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] arm64: dts: sun50i-a64: Add i2c2 pins
2020-02-23 17:29 [PATCH 0/3] Add support for Pine64 PinePhone Linux Smartphone Ondrej Jirman
@ 2020-02-23 17:29 ` Ondrej Jirman
2020-02-24 11:01 ` Maxime Ripard
2020-02-23 17:29 ` [PATCH 2/3] dt-bindings: arm: sunxi: Add PinePhone 1.0 and 1.1 bindings Ondrej Jirman
2020-02-23 17:29 ` [PATCH 3/3] arm64: dts: allwinner: Add initial support for Pine64 PinePhone Ondrej Jirman
2 siblings, 1 reply; 10+ messages in thread
From: Ondrej Jirman @ 2020-02-23 17:29 UTC (permalink / raw)
To: linux-sunxi, Rob Herring, Maxime Ripard, Chen-Yu Tsai
Cc: Ondrej Jirman, Mark Rutland, Corentin Labbe,
Georgii Staroselskii, Samuel Holland, Martijn Braam, Luca Weiss,
Bhushan Shah, Icenowy Zheng, devicetree, linux-arm-kernel,
linux-kernel
PinePhone needs I2C2 pins description. Add it.
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
index 862b47dc9dc90..0fdf5f400d743 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -671,6 +671,11 @@ i2c1_pins: i2c1-pins {
function = "i2c1";
};
+ i2c2_pins: i2c2-pins {
+ pins = "PE14", "PE15";
+ function = "i2c2";
+ };
+
/omit-if-no-ref/
lcd_rgb666_pins: lcd-rgb666-pins {
pins = "PD0", "PD1", "PD2", "PD3", "PD4",
--
2.25.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] dt-bindings: arm: sunxi: Add PinePhone 1.0 and 1.1 bindings
2020-02-23 17:29 [PATCH 0/3] Add support for Pine64 PinePhone Linux Smartphone Ondrej Jirman
2020-02-23 17:29 ` [PATCH 1/3] arm64: dts: sun50i-a64: Add i2c2 pins Ondrej Jirman
@ 2020-02-23 17:29 ` Ondrej Jirman
2020-02-26 22:31 ` Rob Herring
2020-02-23 17:29 ` [PATCH 3/3] arm64: dts: allwinner: Add initial support for Pine64 PinePhone Ondrej Jirman
2 siblings, 1 reply; 10+ messages in thread
From: Ondrej Jirman @ 2020-02-23 17:29 UTC (permalink / raw)
To: linux-sunxi, Rob Herring, Maxime Ripard, Chen-Yu Tsai
Cc: Ondrej Jirman, Mark Rutland, Corentin Labbe,
Georgii Staroselskii, Samuel Holland, Martijn Braam, Luca Weiss,
Bhushan Shah, Icenowy Zheng, devicetree, linux-arm-kernel,
linux-kernel
Document board compatible names for Pine64 PinePhone:
- 1.0 - Developer variant
- 1.1 - Braveheart variant
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
Documentation/devicetree/bindings/arm/sunxi.yaml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
index 327ce67308237..e24e0fac58f04 100644
--- a/Documentation/devicetree/bindings/arm/sunxi.yaml
+++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
@@ -636,6 +636,16 @@ properties:
- const: pine64,pinebook
- const: allwinner,sun50i-a64
+ - description: Pine64 PinePhone Developer Batch (1.0)
+ items:
+ - const: pine64,pinephone-1.0
+ - const: allwinner,sun50i-a64
+
+ - description: Pine64 PinePhone Braveheart (1.1)
+ items:
+ - const: pine64,pinephone-1.1
+ - const: allwinner,sun50i-a64
+
- description: Pine64 SoPine Baseboard
items:
- const: pine64,sopine-baseboard
--
2.25.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] arm64: dts: allwinner: Add initial support for Pine64 PinePhone
2020-02-23 17:29 [PATCH 0/3] Add support for Pine64 PinePhone Linux Smartphone Ondrej Jirman
2020-02-23 17:29 ` [PATCH 1/3] arm64: dts: sun50i-a64: Add i2c2 pins Ondrej Jirman
2020-02-23 17:29 ` [PATCH 2/3] dt-bindings: arm: sunxi: Add PinePhone 1.0 and 1.1 bindings Ondrej Jirman
@ 2020-02-23 17:29 ` Ondrej Jirman
2020-02-24 11:00 ` Maxime Ripard
2 siblings, 1 reply; 10+ messages in thread
From: Ondrej Jirman @ 2020-02-23 17:29 UTC (permalink / raw)
To: linux-sunxi, Rob Herring, Maxime Ripard, Chen-Yu Tsai
Cc: Ondrej Jirman, Mark Rutland, Corentin Labbe,
Georgii Staroselskii, Samuel Holland, Martijn Braam, Luca Weiss,
Bhushan Shah, Icenowy Zheng, devicetree, linux-arm-kernel,
linux-kernel
At them moment PinePhone comes in two slightly incompatible variants:
- 1.0: Early Developer Batch
- 1.1: Braveheart Batch
There will be at least one more incompatible variant in the very near
future, so let's start by sharing the dtsi among multiple variants,
right away, even though the HW description doesn't yet include the
different bits.
This is a basic DT that includes only features that are already
supported by mainline drivers.
Co-developed-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Samuel Holland <samuel@sholland.org>
Co-developed-by: Martijn Braam <martijn@brixit.nl>
Signed-off-by: Martijn Braam <martijn@brixit.nl>
Co-developed-by: Luca Weiss <luca@z3ntu.xyz>
Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
Signed-off-by: Bhushan Shah <bshah@kde.org>
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
arch/arm64/boot/dts/allwinner/Makefile | 2 +
.../allwinner/sun50i-a64-pinephone-1.0.dts | 11 +
.../allwinner/sun50i-a64-pinephone-1.1.dts | 11 +
.../dts/allwinner/sun50i-a64-pinephone.dtsi | 385 ++++++++++++++++++
4 files changed, 409 insertions(+)
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
index cf4f78617c3f3..79ca263672c38 100644
--- a/arch/arm64/boot/dts/allwinner/Makefile
+++ b/arch/arm64/boot/dts/allwinner/Makefile
@@ -9,6 +9,8 @@ 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
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinebook.dtb
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.0.dtb
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.1.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
new file mode 100644
index 0000000000000..0c42272106afa
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
+
+/dts-v1/;
+
+#include "sun50i-a64-pinephone.dtsi"
+
+/ {
+ model = "Pine64 PinePhone Developer Batch (1.0)";
+ compatible = "pine64,pinephone-1.0", "allwinner,sun50i-a64";
+};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
new file mode 100644
index 0000000000000..06a775c41664b
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
+
+/dts-v1/;
+
+#include "sun50i-a64-pinephone.dtsi"
+
+/ {
+ model = "Pine64 PinePhone Braveheart (1.1)";
+ compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64";
+};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
new file mode 100644
index 0000000000000..d0cf21d82c9e9
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
@@ -0,0 +1,385 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+// Copyright (C) 2019 Icenowy Zheng <icenowy@aosc.xyz>
+// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
+
+#include "sun50i-a64.dtsi"
+#include "sun50i-a64-cpu-opp.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+ aliases {
+ serial0 = &uart0;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ blue {
+ function = LED_FUNCTION_INDICATOR;
+ function-enumerator = <1>;
+ color = <LED_COLOR_ID_BLUE>;
+ gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */
+ };
+
+ green {
+ function = LED_FUNCTION_INDICATOR;
+ function-enumerator = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */
+ };
+
+ red {
+ function = LED_FUNCTION_INDICATOR;
+ function-enumerator = <3>;
+ color = <LED_COLOR_ID_RED>;
+ gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */
+ };
+ };
+
+ speaker_amp: audio-amplifier {
+ compatible = "simple-audio-amplifier";
+ enable-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
+ sound-name-prefix = "Speaker Amp";
+ };
+
+ vibrator {
+ compatible = "gpio-vibrator";
+ enable-gpios = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */
+ vcc-supply = <®_dcdc1>;
+ };
+};
+
+&codec {
+ status = "okay";
+};
+
+&codec_analog {
+ cpvdd-supply = <®_eldo1>;
+ status = "okay";
+};
+
+&cpu0 {
+ cpu-supply = <®_dcdc2>;
+};
+
+&cpu1 {
+ cpu-supply = <®_dcdc2>;
+};
+
+&cpu2 {
+ cpu-supply = <®_dcdc2>;
+};
+
+&cpu3 {
+ cpu-supply = <®_dcdc2>;
+};
+
+&dai {
+ status = "okay";
+};
+
+&ehci0 {
+ status = "okay";
+};
+
+&ehci1 {
+ status = "okay";
+};
+
+&i2c1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c1_pins>;
+ status = "okay";
+
+ /* Magnetometer */
+ lis3mdl@1e {
+ compatible = "st,lis3mdl-magn";
+ reg = <0x1e>;
+ vdd-supply = <®_dldo1>;
+ vddio-supply = <®_dldo1>;
+ };
+
+ /* Accelerometer/gyroscope */
+ mpu6050@68 {
+ compatible = "invensense,mpu6050";
+ reg = <0x68>;
+ interrupt-parent = <&pio>;
+ interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
+ vdd-supply = <®_dldo1>;
+ vddio-supply = <®_dldo1>;
+ };
+};
+
+/* Connected to pogo pins */
+&i2c2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c2_pins>;
+ status = "okay";
+};
+
+&lradc {
+ vref-supply = <®_aldo3>;
+ status = "okay";
+
+ button-200 {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ channel = <0>;
+ voltage = <200000>;
+ };
+
+ button-400 {
+ label = "Volume Down";
+ linux,code = <KEY_VOLUMEDOWN>;
+ channel = <0>;
+ voltage = <400000>;
+ };
+};
+
+&mmc0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mmc0_pins>;
+ vmmc-supply = <®_dcdc1>;
+ vqmmc-supply = <®_dcdc1>;
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
+ disable-wp;
+ bus-width = <4>;
+ status = "okay";
+};
+
+&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";
+};
+
+&ohci0 {
+ status = "okay";
+};
+
+&ohci1 {
+ status = "okay";
+};
+
+&pio {
+ vcc-pb-supply = <®_dcdc1>;
+ vcc-pc-supply = <®_dcdc1>;
+ vcc-pd-supply = <®_dcdc1>;
+ vcc-pe-supply = <®_aldo1>;
+ vcc-pf-supply = <®_dcdc1>;
+ vcc-pg-supply = <®_dldo4>;
+ vcc-ph-supply = <®_dcdc1>;
+};
+
+&r_pio {
+ /*
+ * FIXME: We can't add that supply for now since it would
+ * create a circular dependency between pinctrl, the regulator
+ * and the RSB Bus.
+ *
+ * vcc-pl-supply = <®_aldo2>;
+ */
+};
+
+&r_rsb {
+ status = "okay";
+
+ axp803: pmic@3a3 {
+ compatible = "x-powers,axp803";
+ reg = <0x3a3>;
+ interrupt-parent = <&r_intc>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+#include "axp803.dtsi"
+
+&ac_power_supply {
+ status = "okay";
+};
+
+&battery_power_supply {
+ status = "okay";
+};
+
+®_aldo1 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "dovdd-csi";
+};
+
+®_aldo2 {
+ regulator-always-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vcc-pl";
+};
+
+®_aldo3 {
+ regulator-always-on;
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <3300000>;
+ 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 = <1000000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-name = "vdd-cpux";
+};
+
+/* DCDC3 is polyphased with DCDC2 */
+
+®_dcdc5 {
+ regulator-always-on;
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-name = "vcc-dram";
+};
+
+®_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-dsi-sensor";
+};
+
+®_dldo2 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vcc-mipi-io";
+};
+
+®_dldo3 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-name = "avdd-csi";
+};
+
+®_dldo4 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-wifi-io";
+};
+
+®_eldo1 {
+ regulator-always-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vcc-lpddr";
+};
+
+®_eldo3 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "dvdd-1v8-csi";
+};
+
+®_fldo1 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-name = "vcc-1v2-hsic";
+};
+
+®_fldo2 {
+ regulator-always-on;
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-name = "vdd-cpus";
+};
+
+®_ldo_io0 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-lcd-ctp-stk";
+ status = "okay";
+};
+
+®_ldo_io1 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vcc-1v8-typec";
+ status = "okay";
+};
+
+®_rtc_ldo {
+ regulator-name = "vcc-rtc";
+};
+
+&sound {
+ status = "okay";
+ simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
+ simple-audio-card,widgets = "Microphone", "Headset Microphone",
+ "Microphone", "Internal Microphone",
+ "Headphone", "Headphone Jack",
+ "Speaker", "Internal Earpiece",
+ "Speaker", "Internal Speaker";
+ simple-audio-card,routing =
+ "Headphone Jack", "HP",
+ "Internal Earpiece", "EARPIECE",
+ "Internal Speaker", "Speaker Amp OUTL",
+ "Internal Speaker", "Speaker Amp OUTR",
+ "Speaker Amp INL", "LINEOUT",
+ "Speaker Amp INR", "LINEOUT",
+ "Left DAC", "AIF1 Slot 0 Left",
+ "Right DAC", "AIF1 Slot 0 Right",
+ "AIF1 Slot 0 Left ADC", "Left ADC",
+ "AIF1 Slot 0 Right ADC", "Right ADC",
+ "Internal Microphone", "MBIAS",
+ "MIC1", "Internal Microphone",
+ "Headset Microphone", "HBIAS",
+ "MIC2", "Headset Microphone";
+};
+
+&uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart0_pb_pins>;
+ status = "okay";
+};
+
+/* Connected to the modem */
+&uart3 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart3_pins>;
+ status = "okay";
+};
+
+&usb_otg {
+ dr_mode = "peripheral";
+ status = "okay";
+};
+
+&usb_power_supply {
+ status = "okay";
+};
+
+&usbphy {
+ status = "okay";
+};
--
2.25.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] arm64: dts: allwinner: Add initial support for Pine64 PinePhone
2020-02-23 17:29 ` [PATCH 3/3] arm64: dts: allwinner: Add initial support for Pine64 PinePhone Ondrej Jirman
@ 2020-02-24 11:00 ` Maxime Ripard
2020-02-24 12:56 ` Ondřej Jirman
0 siblings, 1 reply; 10+ messages in thread
From: Maxime Ripard @ 2020-02-24 11:00 UTC (permalink / raw)
To: Ondrej Jirman
Cc: linux-sunxi, Rob Herring, Chen-Yu Tsai, Mark Rutland,
Corentin Labbe, Georgii Staroselskii, Samuel Holland,
Martijn Braam, Luca Weiss, Bhushan Shah, Icenowy Zheng,
devicetree, linux-arm-kernel, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 12780 bytes --]
Hi,
On Sun, Feb 23, 2020 at 06:29:16PM +0100, Ondrej Jirman wrote:
> At them moment PinePhone comes in two slightly incompatible variants:
>
> - 1.0: Early Developer Batch
> - 1.1: Braveheart Batch
>
> There will be at least one more incompatible variant in the very near
> future, so let's start by sharing the dtsi among multiple variants,
> right away, even though the HW description doesn't yet include the
> different bits.
>
> This is a basic DT that includes only features that are already
> supported by mainline drivers.
What are those incompatibilities? It's not really obvious from your
patch.
> Co-developed-by: Samuel Holland <samuel@sholland.org>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
> Co-developed-by: Martijn Braam <martijn@brixit.nl>
> Signed-off-by: Martijn Braam <martijn@brixit.nl>
> Co-developed-by: Luca Weiss <luca@z3ntu.xyz>
> Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
> Signed-off-by: Bhushan Shah <bshah@kde.org>
> Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
> Signed-off-by: Ondrej Jirman <megous@megous.com>
> ---
> arch/arm64/boot/dts/allwinner/Makefile | 2 +
> .../allwinner/sun50i-a64-pinephone-1.0.dts | 11 +
> .../allwinner/sun50i-a64-pinephone-1.1.dts | 11 +
> .../dts/allwinner/sun50i-a64-pinephone.dtsi | 385 ++++++++++++++++++
> 4 files changed, 409 insertions(+)
> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
>
> diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
> index cf4f78617c3f3..79ca263672c38 100644
> --- a/arch/arm64/boot/dts/allwinner/Makefile
> +++ b/arch/arm64/boot/dts/allwinner/Makefile
> @@ -9,6 +9,8 @@ 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
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinebook.dtb
> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.0.dtb
> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.1.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
> new file mode 100644
> index 0000000000000..0c42272106afa
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
> @@ -0,0 +1,11 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
Given the list of authors, surely you're not the sole copyright owner
here?
> +/dts-v1/;
> +
> +#include "sun50i-a64-pinephone.dtsi"
> +
> +/ {
> + model = "Pine64 PinePhone Developer Batch (1.0)";
> + compatible = "pine64,pinephone-1.0", "allwinner,sun50i-a64";
> +};
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
> new file mode 100644
> index 0000000000000..06a775c41664b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
> @@ -0,0 +1,11 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
> +
> +/dts-v1/;
> +
> +#include "sun50i-a64-pinephone.dtsi"
> +
> +/ {
> + model = "Pine64 PinePhone Braveheart (1.1)";
> + compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64";
> +};
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
> new file mode 100644
> index 0000000000000..d0cf21d82c9e9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
> @@ -0,0 +1,385 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +// Copyright (C) 2019 Icenowy Zheng <icenowy@aosc.xyz>
> +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
> +
> +#include "sun50i-a64.dtsi"
> +#include "sun50i-a64-cpu-opp.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/leds/common.h>
> +#include <dt-bindings/pwm/pwm.h>
> +
> +/ {
> + aliases {
> + serial0 = &uart0;
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> +
> + blue {
> + function = LED_FUNCTION_INDICATOR;
> + function-enumerator = <1>;
> + color = <LED_COLOR_ID_BLUE>;
> + gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */
> + };
> +
> + green {
> + function = LED_FUNCTION_INDICATOR;
> + function-enumerator = <2>;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */
> + };
> +
> + red {
> + function = LED_FUNCTION_INDICATOR;
> + function-enumerator = <3>;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */
> + };
> + };
LEDs should be named using the $color:$board:$usage pattern
> +
> + speaker_amp: audio-amplifier {
> + compatible = "simple-audio-amplifier";
> + enable-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
> + sound-name-prefix = "Speaker Amp";
> + };
> +
> + vibrator {
> + compatible = "gpio-vibrator";
> + enable-gpios = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */
> + vcc-supply = <®_dcdc1>;
> + };
> +};
> +
> +&codec {
> + status = "okay";
> +};
> +
> +&codec_analog {
> + cpvdd-supply = <®_eldo1>;
> + status = "okay";
> +};
> +
> +&cpu0 {
> + cpu-supply = <®_dcdc2>;
> +};
> +
> +&cpu1 {
> + cpu-supply = <®_dcdc2>;
> +};
> +
> +&cpu2 {
> + cpu-supply = <®_dcdc2>;
> +};
> +
> +&cpu3 {
> + cpu-supply = <®_dcdc2>;
> +};
> +
> +&dai {
> + status = "okay";
> +};
> +
> +&ehci0 {
> + status = "okay";
> +};
> +
> +&ehci1 {
> + status = "okay";
> +};
> +
> +&i2c1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&i2c1_pins>;
That's the default
> + status = "okay";
> +
> + /* Magnetometer */
> + lis3mdl@1e {
> + compatible = "st,lis3mdl-magn";
> + reg = <0x1e>;
> + vdd-supply = <®_dldo1>;
> + vddio-supply = <®_dldo1>;
> + };
> +
> + /* Accelerometer/gyroscope */
> + mpu6050@68 {
> + compatible = "invensense,mpu6050";
> + reg = <0x68>;
> + interrupt-parent = <&pio>;
> + interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
> + vdd-supply = <®_dldo1>;
> + vddio-supply = <®_dldo1>;
> + };
> +};
> +
> +/* Connected to pogo pins */
> +&i2c2 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&i2c2_pins>;
That's the default as well
> + status = "okay";
> +};
And I'm not sure what the pogo pins are?
> +
> +&lradc {
> + vref-supply = <®_aldo3>;
> + status = "okay";
> +
> + button-200 {
> + label = "Volume Up";
> + linux,code = <KEY_VOLUMEUP>;
> + channel = <0>;
> + voltage = <200000>;
> + };
> +
> + button-400 {
> + label = "Volume Down";
> + linux,code = <KEY_VOLUMEDOWN>;
> + channel = <0>;
> + voltage = <400000>;
> + };
> +};
> +
> +&mmc0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mmc0_pins>;
That's the default
> + vmmc-supply = <®_dcdc1>;
> + vqmmc-supply = <®_dcdc1>;
> + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
> + disable-wp;
> + bus-width = <4>;
> + status = "okay";
> +};
> +
> +&mmc2 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mmc2_pins>;
Ditto
> + vmmc-supply = <®_dcdc1>;
> + vqmmc-supply = <®_dcdc1>;
> + bus-width = <8>;
> + non-removable;
> + cap-mmc-hw-reset;
> + status = "okay";
> +};
> +
> +&ohci0 {
> + status = "okay";
> +};
> +
> +&ohci1 {
> + status = "okay";
> +};
> +
> +&pio {
> + vcc-pb-supply = <®_dcdc1>;
> + vcc-pc-supply = <®_dcdc1>;
> + vcc-pd-supply = <®_dcdc1>;
> + vcc-pe-supply = <®_aldo1>;
> + vcc-pf-supply = <®_dcdc1>;
> + vcc-pg-supply = <®_dldo4>;
> + vcc-ph-supply = <®_dcdc1>;
> +};
> +
> +&r_pio {
> + /*
> + * FIXME: We can't add that supply for now since it would
> + * create a circular dependency between pinctrl, the regulator
> + * and the RSB Bus.
> + *
> + * vcc-pl-supply = <®_aldo2>;
> + */
> +};
> +
> +&r_rsb {
> + status = "okay";
> +
> + axp803: pmic@3a3 {
> + compatible = "x-powers,axp803";
> + reg = <0x3a3>;
> + interrupt-parent = <&r_intc>;
> + interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
> + };
> +};
> +
> +#include "axp803.dtsi"
> +
> +&ac_power_supply {
> + status = "okay";
> +};
> +
> +&battery_power_supply {
> + status = "okay";
> +};
> +
> +®_aldo1 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "dovdd-csi";
> +};
> +
> +®_aldo2 {
> + regulator-always-on;
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc-pl";
> +};
> +
> +®_aldo3 {
> + regulator-always-on;
> + regulator-min-microvolt = <2700000>;
> + regulator-max-microvolt = <3300000>;
> + 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 = <1000000>;
> + regulator-max-microvolt = <1300000>;
> + regulator-name = "vdd-cpux";
> +};
> +
> +/* DCDC3 is polyphased with DCDC2 */
> +
> +®_dcdc5 {
> + regulator-always-on;
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-name = "vcc-dram";
> +};
> +
> +®_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-dsi-sensor";
> +};
> +
> +®_dldo2 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc-mipi-io";
> +};
> +
> +®_dldo3 {
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + regulator-name = "avdd-csi";
> +};
> +
> +®_dldo4 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc-wifi-io";
> +};
> +
> +®_eldo1 {
> + regulator-always-on;
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc-lpddr";
> +};
> +
> +®_eldo3 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "dvdd-1v8-csi";
> +};
> +
> +®_fldo1 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-name = "vcc-1v2-hsic";
> +};
> +
> +®_fldo2 {
> + regulator-always-on;
> + regulator-min-microvolt = <1100000>;
> + regulator-max-microvolt = <1100000>;
> + regulator-name = "vdd-cpus";
> +};
> +
> +®_ldo_io0 {
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc-lcd-ctp-stk";
> + status = "okay";
> +};
> +
> +®_ldo_io1 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc-1v8-typec";
> + status = "okay";
> +};
> +
> +®_rtc_ldo {
> + regulator-name = "vcc-rtc";
> +};
> +
> +&sound {
> + status = "okay";
> + simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
> + simple-audio-card,widgets = "Microphone", "Headset Microphone",
> + "Microphone", "Internal Microphone",
> + "Headphone", "Headphone Jack",
> + "Speaker", "Internal Earpiece",
> + "Speaker", "Internal Speaker";
> + simple-audio-card,routing =
> + "Headphone Jack", "HP",
> + "Internal Earpiece", "EARPIECE",
> + "Internal Speaker", "Speaker Amp OUTL",
> + "Internal Speaker", "Speaker Amp OUTR",
> + "Speaker Amp INL", "LINEOUT",
> + "Speaker Amp INR", "LINEOUT",
> + "Left DAC", "AIF1 Slot 0 Left",
> + "Right DAC", "AIF1 Slot 0 Right",
> + "AIF1 Slot 0 Left ADC", "Left ADC",
> + "AIF1 Slot 0 Right ADC", "Right ADC",
> + "Internal Microphone", "MBIAS",
> + "MIC1", "Internal Microphone",
> + "Headset Microphone", "HBIAS",
> + "MIC2", "Headset Microphone";
> +};
> +
> +&uart0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart0_pb_pins>;
> + status = "okay";
> +};
> +
> +/* Connected to the modem */
> +&uart3 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart3_pins>;
That's the default too, and I guess you'd need hardware flow control
here?
> + status = "okay";
> +};
> +
> +&usb_otg {
> + dr_mode = "peripheral";
> + status = "okay";
> +};
> +
> +&usb_power_supply {
> + status = "okay";
> +};
> +
> +&usbphy {
> + status = "okay";
> +};
> --
> 2.25.1
>
Looks good otherwise, thanks!
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] arm64: dts: sun50i-a64: Add i2c2 pins
2020-02-23 17:29 ` [PATCH 1/3] arm64: dts: sun50i-a64: Add i2c2 pins Ondrej Jirman
@ 2020-02-24 11:01 ` Maxime Ripard
2020-02-24 12:59 ` Ondřej Jirman
0 siblings, 1 reply; 10+ messages in thread
From: Maxime Ripard @ 2020-02-24 11:01 UTC (permalink / raw)
To: Ondrej Jirman
Cc: linux-sunxi, Rob Herring, Chen-Yu Tsai, Mark Rutland,
Corentin Labbe, Georgii Staroselskii, Samuel Holland,
Martijn Braam, Luca Weiss, Bhushan Shah, Icenowy Zheng,
devicetree, linux-arm-kernel, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 775 bytes --]
On Sun, Feb 23, 2020 at 06:29:14PM +0100, Ondrej Jirman wrote:
> PinePhone needs I2C2 pins description. Add it.
>
> Signed-off-by: Ondrej Jirman <megous@megous.com>
> ---
> arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> index 862b47dc9dc90..0fdf5f400d743 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> @@ -671,6 +671,11 @@ i2c1_pins: i2c1-pins {
> function = "i2c1";
> };
>
> + i2c2_pins: i2c2-pins {
> + pins = "PE14", "PE15";
> + function = "i2c2";
> + };
> +
Setting it as the default muxing for i2c2 would be great
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] arm64: dts: allwinner: Add initial support for Pine64 PinePhone
2020-02-24 11:00 ` Maxime Ripard
@ 2020-02-24 12:56 ` Ondřej Jirman
2020-02-24 16:58 ` Martijn Braam
0 siblings, 1 reply; 10+ messages in thread
From: Ondřej Jirman @ 2020-02-24 12:56 UTC (permalink / raw)
To: Maxime Ripard
Cc: linux-sunxi, Rob Herring, Chen-Yu Tsai, Mark Rutland,
Corentin Labbe, Georgii Staroselskii, Samuel Holland,
Martijn Braam, Luca Weiss, Bhushan Shah, Icenowy Zheng,
devicetree, linux-arm-kernel, linux-kernel
Hello Maxime,
On Mon, Feb 24, 2020 at 12:00:27PM +0100, Maxime Ripard wrote:
> Hi,
>
> On Sun, Feb 23, 2020 at 06:29:16PM +0100, Ondrej Jirman wrote:
> > At them moment PinePhone comes in two slightly incompatible variants:
> >
> > - 1.0: Early Developer Batch
> > - 1.1: Braveheart Batch
> >
> > There will be at least one more incompatible variant in the very near
> > future, so let's start by sharing the dtsi among multiple variants,
> > right away, even though the HW description doesn't yet include the
> > different bits.
> >
> > This is a basic DT that includes only features that are already
> > supported by mainline drivers.
>
> What are those incompatibilities? It's not really obvious from your
> patch.
The changes are listed here:
https://wiki.pine64.org/index.php/PinePhone_v1.1_-_Braveheart#Changes_from_1.0
Substantial ones are:
2. Swap PC3 to FLASH_EN and PD24 to FLASH_TRIGOUT, where previously they were reversed
5. Set the EG25G's PWRKEY on by default (see resistor R1526)
6. Add R630 resistor location, populate with 0K by default. Allows adjusting to
different battery thermistors in case this is not possible in software.
The incompatiblilities between 1.1 and 1.2 will be more extensive:
https://wiki.pine64.org/index.php/PinePhone/Power_Management#Suggested_GPIO_Hardware_Changes
> > Co-developed-by: Samuel Holland <samuel@sholland.org>
> > Signed-off-by: Samuel Holland <samuel@sholland.org>
> > Co-developed-by: Martijn Braam <martijn@brixit.nl>
> > Signed-off-by: Martijn Braam <martijn@brixit.nl>
> > Co-developed-by: Luca Weiss <luca@z3ntu.xyz>
> > Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
> > Signed-off-by: Bhushan Shah <bshah@kde.org>
> > Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
> > Signed-off-by: Ondrej Jirman <megous@megous.com>
> > ---
> > arch/arm64/boot/dts/allwinner/Makefile | 2 +
> > .../allwinner/sun50i-a64-pinephone-1.0.dts | 11 +
> > .../allwinner/sun50i-a64-pinephone-1.1.dts | 11 +
> > .../dts/allwinner/sun50i-a64-pinephone.dtsi | 385 ++++++++++++++++++
> > 4 files changed, 409 insertions(+)
> > create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
> > create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
> > create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
> >
> > diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
> > index cf4f78617c3f3..79ca263672c38 100644
> > --- a/arch/arm64/boot/dts/allwinner/Makefile
> > +++ b/arch/arm64/boot/dts/allwinner/Makefile
> > @@ -9,6 +9,8 @@ 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
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinebook.dtb
> > +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.0.dtb
> > +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.1.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb
> > dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
> > new file mode 100644
> > index 0000000000000..0c42272106afa
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
> > @@ -0,0 +1,11 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
>
> Given the list of authors, surely you're not the sole copyright owner
> here?
Yes, I made this and the 1.1 dts file by myself. It's not really a meaningful
contribution, since at the moment it's basically empty. I suppose to have
a license, the file requires some author.
Collaborative work is mostly in the dtsi.
> > +/dts-v1/;
> > +
> > +#include "sun50i-a64-pinephone.dtsi"
> > +
> > +/ {
> > + model = "Pine64 PinePhone Developer Batch (1.0)";
> > + compatible = "pine64,pinephone-1.0", "allwinner,sun50i-a64";
> > +};
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
> > new file mode 100644
> > index 0000000000000..06a775c41664b
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
> > @@ -0,0 +1,11 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
> > +
> > +/dts-v1/;
> > +
> > +#include "sun50i-a64-pinephone.dtsi"
> > +
> > +/ {
> > + model = "Pine64 PinePhone Braveheart (1.1)";
> > + compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64";
> > +};
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
> > new file mode 100644
> > index 0000000000000..d0cf21d82c9e9
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
> > @@ -0,0 +1,385 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +// Copyright (C) 2019 Icenowy Zheng <icenowy@aosc.xyz>
> > +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
For the record. Originally I took this file from:
https://gitlab.com/pine64-org/linux/commits/pine64-kernel-5.4.y
https://gitlab.com/pine64-org/linux/-/blob/pine64-kernel-5.4.y/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dts
about a month ago, and kept working on it in my trees for 5.5 and 5.6:
https://megous.com/git/linux/log/?h=pp-5.5
https://megous.com/git/linux/log/?h=pp-5.6
Adding support for using multiple cameras, bugfixing, and integrating work from
others, and now doing the legwork to strip the more complete DTS and make it
into a mainlainable state, so that collaboration can continue in the mainline
tree.
AFAIK, at this point (after stripdown), most of the work comes from Icenowy.
With some people contributing "smaller" things. I say "smaller" in quotes, since
I know that there can be a weekend of debugging behind changing a 2-3 lines, and
don't want to minimize anyone's contribution.
IANAL and I don't know what's entirely apropriate to do here. I've disucssed
this briefly on the IRC with involved people (that are also CCed in this
series), and there was a suggestion to adding a bunch of Cob/SoB tags, based on
some even older DTS file for dontbeevil (developer kit for PinePhone), that the
Icenowy's file was based on. So I did.
The more copyright holders the better, I guess. :) So if CCed people want to
be added here, and made the contribution to the present file, please state
so for the record again here on the mailing list, and I'll add you to the
header, or anywhere you wish.
> > +#include "sun50i-a64.dtsi"
> > +#include "sun50i-a64-cpu-opp.dtsi"
> > +
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include <dt-bindings/input/input.h>
> > +#include <dt-bindings/leds/common.h>
> > +#include <dt-bindings/pwm/pwm.h>
> > +
> > +/ {
> > + aliases {
> > + serial0 = &uart0;
> > + };
> > +
> > + chosen {
> > + stdout-path = "serial0:115200n8";
> > + };
> > +
> > + leds {
> > + compatible = "gpio-leds";
> > +
> > + blue {
> > + function = LED_FUNCTION_INDICATOR;
> > + function-enumerator = <1>;
> > + color = <LED_COLOR_ID_BLUE>;
> > + gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */
> > + };
> > +
> > + green {
> > + function = LED_FUNCTION_INDICATOR;
> > + function-enumerator = <2>;
> > + color = <LED_COLOR_ID_GREEN>;
> > + gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */
> > + };
> > +
> > + red {
> > + function = LED_FUNCTION_INDICATOR;
> > + function-enumerator = <3>;
> > + color = <LED_COLOR_ID_RED>;
> > + gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */
> > + };
> > + };
>
> LEDs should be named using the $color:$board:$usage pattern
Do you mean using a label? It seems label is deprecated, and bindings should
start using function/function-enumerator/color properties now:
https://elixir.bootlin.com/linux/v5.6-rc2/source/Documentation/devicetree/bindings/leds/common.yaml#L57
It doesn't look like the new bindings are used much, yet. I've found:
https://elixir.bootlin.com/linux/v5.6-rc2/source/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
and
https://elixir.bootlin.com/linux/v5.6-rc2/source/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi#L96
On PinePhone these are indicator leds with no pre-defined meaning, for
use by the apps to indicate things like a new SMS, or missed call, or
whatever people desire.
> > +
> > + speaker_amp: audio-amplifier {
> > + compatible = "simple-audio-amplifier";
> > + enable-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
> > + sound-name-prefix = "Speaker Amp";
> > + };
> > +
> > + vibrator {
> > + compatible = "gpio-vibrator";
> > + enable-gpios = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */
> > + vcc-supply = <®_dcdc1>;
> > + };
> > +};
> > +
> > +&codec {
> > + status = "okay";
> > +};
> > +
> > +&codec_analog {
> > + cpvdd-supply = <®_eldo1>;
> > + status = "okay";
> > +};
> > +
> > +&cpu0 {
> > + cpu-supply = <®_dcdc2>;
> > +};
> > +
> > +&cpu1 {
> > + cpu-supply = <®_dcdc2>;
> > +};
> > +
> > +&cpu2 {
> > + cpu-supply = <®_dcdc2>;
> > +};
> > +
> > +&cpu3 {
> > + cpu-supply = <®_dcdc2>;
> > +};
> > +
> > +&dai {
> > + status = "okay";
> > +};
> > +
> > +&ehci0 {
> > + status = "okay";
> > +};
> > +
> > +&ehci1 {
> > + status = "okay";
> > +};
> > +
> > +&i2c1 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&i2c1_pins>;
>
> That's the default
Ok.
> > + status = "okay";
> > +
> > + /* Magnetometer */
> > + lis3mdl@1e {
> > + compatible = "st,lis3mdl-magn";
> > + reg = <0x1e>;
> > + vdd-supply = <®_dldo1>;
> > + vddio-supply = <®_dldo1>;
> > + };
> > +
> > + /* Accelerometer/gyroscope */
> > + mpu6050@68 {
> > + compatible = "invensense,mpu6050";
> > + reg = <0x68>;
> > + interrupt-parent = <&pio>;
> > + interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
> > + vdd-supply = <®_dldo1>;
> > + vddio-supply = <®_dldo1>;
> > + };
> > +};
> > +
> > +/* Connected to pogo pins */
> > +&i2c2 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&i2c2_pins>;
>
> That's the default as well
Actually it is not. There's not i2c2_pins at all in the mainline yet.
> > + status = "okay";
> > +};
>
> And I'm not sure what the pogo pins are?
It's a common name for spring-loaded pin headers that can be used to connect the
phone to auxiliary devices. 6 pins are visible on this image near the top:
https://wiki.pine64.org/index.php/File:PinePhone_switches.jpeg
> > +
> > +&lradc {
> > + vref-supply = <®_aldo3>;
> > + status = "okay";
> > +
> > + button-200 {
> > + label = "Volume Up";
> > + linux,code = <KEY_VOLUMEUP>;
> > + channel = <0>;
> > + voltage = <200000>;
> > + };
> > +
> > + button-400 {
> > + label = "Volume Down";
> > + linux,code = <KEY_VOLUMEDOWN>;
> > + channel = <0>;
> > + voltage = <400000>;
> > + };
> > +};
> > +
> > +&mmc0 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&mmc0_pins>;
>
> That's the default
Ok.
> > + vmmc-supply = <®_dcdc1>;
> > + vqmmc-supply = <®_dcdc1>;
> > + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
> > + disable-wp;
> > + bus-width = <4>;
> > + status = "okay";
> > +};
> > +
> > +&mmc2 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&mmc2_pins>;
>
> Ditto
Will remove.
> > + vmmc-supply = <®_dcdc1>;
> > + vqmmc-supply = <®_dcdc1>;
> > + bus-width = <8>;
> > + non-removable;
> > + cap-mmc-hw-reset;
> > + status = "okay";
> > +};
> > +
> > +&ohci0 {
> > + status = "okay";
> > +};
> > +
> > +&ohci1 {
> > + status = "okay";
> > +};
> > +
> > +&pio {
> > + vcc-pb-supply = <®_dcdc1>;
> > + vcc-pc-supply = <®_dcdc1>;
> > + vcc-pd-supply = <®_dcdc1>;
> > + vcc-pe-supply = <®_aldo1>;
> > + vcc-pf-supply = <®_dcdc1>;
> > + vcc-pg-supply = <®_dldo4>;
> > + vcc-ph-supply = <®_dcdc1>;
> > +};
> > +
> > +&r_pio {
> > + /*
> > + * FIXME: We can't add that supply for now since it would
> > + * create a circular dependency between pinctrl, the regulator
> > + * and the RSB Bus.
> > + *
> > + * vcc-pl-supply = <®_aldo2>;
> > + */
> > +};
> > +
> > +&r_rsb {
> > + status = "okay";
> > +
> > + axp803: pmic@3a3 {
> > + compatible = "x-powers,axp803";
> > + reg = <0x3a3>;
> > + interrupt-parent = <&r_intc>;
> > + interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
> > + };
> > +};
> > +
> > +#include "axp803.dtsi"
> > +
> > +&ac_power_supply {
> > + status = "okay";
> > +};
> > +
> > +&battery_power_supply {
> > + status = "okay";
> > +};
> > +
> > +®_aldo1 {
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "dovdd-csi";
> > +};
> > +
> > +®_aldo2 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "vcc-pl";
> > +};
> > +
> > +®_aldo3 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <2700000>;
> > + regulator-max-microvolt = <3300000>;
> > + 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 = <1000000>;
> > + regulator-max-microvolt = <1300000>;
> > + regulator-name = "vdd-cpux";
> > +};
> > +
> > +/* DCDC3 is polyphased with DCDC2 */
> > +
> > +®_dcdc5 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <1200000>;
> > + regulator-max-microvolt = <1200000>;
> > + regulator-name = "vcc-dram";
> > +};
> > +
> > +®_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-dsi-sensor";
> > +};
> > +
> > +®_dldo2 {
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "vcc-mipi-io";
> > +};
> > +
> > +®_dldo3 {
> > + regulator-min-microvolt = <2800000>;
> > + regulator-max-microvolt = <2800000>;
> > + regulator-name = "avdd-csi";
> > +};
> > +
> > +®_dldo4 {
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-name = "vcc-wifi-io";
> > +};
> > +
> > +®_eldo1 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "vcc-lpddr";
> > +};
> > +
> > +®_eldo3 {
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "dvdd-1v8-csi";
> > +};
> > +
> > +®_fldo1 {
> > + regulator-min-microvolt = <1200000>;
> > + regulator-max-microvolt = <1200000>;
> > + regulator-name = "vcc-1v2-hsic";
> > +};
> > +
> > +®_fldo2 {
> > + regulator-always-on;
> > + regulator-min-microvolt = <1100000>;
> > + regulator-max-microvolt = <1100000>;
> > + regulator-name = "vdd-cpus";
> > +};
> > +
> > +®_ldo_io0 {
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-name = "vcc-lcd-ctp-stk";
> > + status = "okay";
> > +};
> > +
> > +®_ldo_io1 {
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-name = "vcc-1v8-typec";
> > + status = "okay";
> > +};
> > +
> > +®_rtc_ldo {
> > + regulator-name = "vcc-rtc";
> > +};
> > +
> > +&sound {
> > + status = "okay";
> > + simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
> > + simple-audio-card,widgets = "Microphone", "Headset Microphone",
> > + "Microphone", "Internal Microphone",
> > + "Headphone", "Headphone Jack",
> > + "Speaker", "Internal Earpiece",
> > + "Speaker", "Internal Speaker";
> > + simple-audio-card,routing =
> > + "Headphone Jack", "HP",
> > + "Internal Earpiece", "EARPIECE",
> > + "Internal Speaker", "Speaker Amp OUTL",
> > + "Internal Speaker", "Speaker Amp OUTR",
> > + "Speaker Amp INL", "LINEOUT",
> > + "Speaker Amp INR", "LINEOUT",
> > + "Left DAC", "AIF1 Slot 0 Left",
> > + "Right DAC", "AIF1 Slot 0 Right",
> > + "AIF1 Slot 0 Left ADC", "Left ADC",
> > + "AIF1 Slot 0 Right ADC", "Right ADC",
> > + "Internal Microphone", "MBIAS",
> > + "MIC1", "Internal Microphone",
> > + "Headset Microphone", "HBIAS",
> > + "MIC2", "Headset Microphone";
> > +};
> > +
> > +&uart0 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart0_pb_pins>;
> > + status = "okay";
> > +};
> > +
> > +/* Connected to the modem */
> > +&uart3 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart3_pins>;
>
> That's the default too, and I guess you'd need hardware flow control
> here?
Hardware flow control is routed badly on the board, and can't be used at the
moment on any of the submitted versions. It may be added in 1.2.
> > + status = "okay";
> > +};
> > +
> > +&usb_otg {
> > + dr_mode = "peripheral";
> > + status = "okay";
> > +};
> > +
> > +&usb_power_supply {
> > + status = "okay";
> > +};
> > +
> > +&usbphy {
> > + status = "okay";
> > +};
> > --
> > 2.25.1
> >
>
> Looks good otherwise, thanks!
> Maxime
Thank you for the review. :)
regards,
o.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] arm64: dts: sun50i-a64: Add i2c2 pins
2020-02-24 11:01 ` Maxime Ripard
@ 2020-02-24 12:59 ` Ondřej Jirman
0 siblings, 0 replies; 10+ messages in thread
From: Ondřej Jirman @ 2020-02-24 12:59 UTC (permalink / raw)
To: Maxime Ripard
Cc: linux-sunxi, Rob Herring, Chen-Yu Tsai, Mark Rutland,
Corentin Labbe, Georgii Staroselskii, Samuel Holland,
Martijn Braam, Luca Weiss, Bhushan Shah, Icenowy Zheng,
devicetree, linux-arm-kernel, linux-kernel
On Mon, Feb 24, 2020 at 12:01:00PM +0100, Maxime Ripard wrote:
> On Sun, Feb 23, 2020 at 06:29:14PM +0100, Ondrej Jirman wrote:
> > PinePhone needs I2C2 pins description. Add it.
> >
> > Signed-off-by: Ondrej Jirman <megous@megous.com>
> > ---
> > arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > index 862b47dc9dc90..0fdf5f400d743 100644
> > --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > @@ -671,6 +671,11 @@ i2c1_pins: i2c1-pins {
> > function = "i2c1";
> > };
> >
> > + i2c2_pins: i2c2-pins {
> > + pins = "PE14", "PE15";
> > + function = "i2c2";
> > + };
> > +
>
> Setting it as the default muxing for i2c2 would be great
Right, I checked the datasheet and it looks like this is the only pins where
i2c2 can be muxed to.
I will change it.
regards,
o.
> Maxime
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] arm64: dts: allwinner: Add initial support for Pine64 PinePhone
2020-02-24 12:56 ` Ondřej Jirman
@ 2020-02-24 16:58 ` Martijn Braam
0 siblings, 0 replies; 10+ messages in thread
From: Martijn Braam @ 2020-02-24 16:58 UTC (permalink / raw)
To: Maxime Ripard, linux-sunxi, Rob Herring, Chen-Yu Tsai,
Mark Rutland, Corentin Labbe, Georgii Staroselskii,
Samuel Holland, Luca Weiss, Bhushan Shah, Icenowy Zheng,
devicetree, linux-arm-kernel, linux-kernel
On 2020-02-24 13:56, Ondřej Jirman wrote:
> Hello Maxime,
>
> On Mon, Feb 24, 2020 at 12:00:27PM +0100, Maxime Ripard wrote:
>> Hi,
>>
>> On Sun, Feb 23, 2020 at 06:29:16PM +0100, Ondrej Jirman wrote:
>>> At them moment PinePhone comes in two slightly incompatible variants:
>>>
>>> - 1.0: Early Developer Batch
>>> - 1.1: Braveheart Batch
>>>
>>> There will be at least one more incompatible variant in the very near
>>> future, so let's start by sharing the dtsi among multiple variants,
>>> right away, even though the HW description doesn't yet include the
>>> different bits.
>>>
>>> This is a basic DT that includes only features that are already
>>> supported by mainline drivers.
>>
>> What are those incompatibilities? It's not really obvious from your
>> patch.
>
> The changes are listed here:
>
> https://wiki.pine64.org/index.php/PinePhone_v1.1_-_Braveheart#Changes_from_1.0
>
> Substantial ones are:
>
> 2. Swap PC3 to FLASH_EN and PD24 to FLASH_TRIGOUT, where previously they were reversed
> 5. Set the EG25G's PWRKEY on by default (see resistor R1526)
> 6. Add R630 resistor location, populate with 0K by default. Allows adjusting to
> different battery thermistors in case this is not possible in software.
>
> The incompatiblilities between 1.1 and 1.2 will be more extensive:
>
> https://wiki.pine64.org/index.php/PinePhone/Power_Management#Suggested_GPIO_Hardware_Changes
>
>>> Co-developed-by: Samuel Holland <samuel@sholland.org>
>>> Signed-off-by: Samuel Holland <samuel@sholland.org>
>>> Co-developed-by: Martijn Braam <martijn@brixit.nl>
>>> Signed-off-by: Martijn Braam <martijn@brixit.nl>
>>> Co-developed-by: Luca Weiss <luca@z3ntu.xyz>
>>> Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
>>> Signed-off-by: Bhushan Shah <bshah@kde.org>
>>> Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
>>> Signed-off-by: Ondrej Jirman <megous@megous.com>
>>> ---
>>> arch/arm64/boot/dts/allwinner/Makefile | 2 +
>>> .../allwinner/sun50i-a64-pinephone-1.0.dts | 11 +
>>> .../allwinner/sun50i-a64-pinephone-1.1.dts | 11 +
>>> .../dts/allwinner/sun50i-a64-pinephone.dtsi | 385 ++++++++++++++++++
>>> 4 files changed, 409 insertions(+)
>>> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
>>> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
>>> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
>>>
>>> diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
>>> index cf4f78617c3f3..79ca263672c38 100644
>>> --- a/arch/arm64/boot/dts/allwinner/Makefile
>>> +++ b/arch/arm64/boot/dts/allwinner/Makefile
>>> @@ -9,6 +9,8 @@ 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
>>> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinebook.dtb
>>> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.0.dtb
>>> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.1.dtb
>>> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
>>> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb
>>> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb
>>> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
>>> new file mode 100644
>>> index 0000000000000..0c42272106afa
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
>>> @@ -0,0 +1,11 @@
>>> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>>> +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
>>
>> Given the list of authors, surely you're not the sole copyright owner
>> here?
>
> Yes, I made this and the 1.1 dts file by myself. It's not really a meaningful
> contribution, since at the moment it's basically empty. I suppose to have
> a license, the file requires some author.
>
> Collaborative work is mostly in the dtsi.
>
>>> +/dts-v1/;
>>> +
>>> +#include "sun50i-a64-pinephone.dtsi"
>>> +
>>> +/ {
>>> + model = "Pine64 PinePhone Developer Batch (1.0)";
>>> + compatible = "pine64,pinephone-1.0", "allwinner,sun50i-a64";
>>> +};
>>> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
>>> new file mode 100644
>>> index 0000000000000..06a775c41664b
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
>>> @@ -0,0 +1,11 @@
>>> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>>> +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
>>> +
>>> +/dts-v1/;
>>> +
>>> +#include "sun50i-a64-pinephone.dtsi"
>>> +
>>> +/ {
>>> + model = "Pine64 PinePhone Braveheart (1.1)";
>>> + compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64";
>>> +};
>>> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
>>> new file mode 100644
>>> index 0000000000000..d0cf21d82c9e9
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
>>> @@ -0,0 +1,385 @@
>>> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>>> +// Copyright (C) 2019 Icenowy Zheng <icenowy@aosc.xyz>
>>> +// Copyright (C) 2020 Ondrej Jirman <megous@megous.com>
>
> For the record. Originally I took this file from:
>
> https://gitlab.com/pine64-org/linux/commits/pine64-kernel-5.4.y
> https://gitlab.com/pine64-org/linux/-/blob/pine64-kernel-5.4.y/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dts
>
> about a month ago, and kept working on it in my trees for 5.5 and 5.6:
>
> https://megous.com/git/linux/log/?h=pp-5.5
> https://megous.com/git/linux/log/?h=pp-5.6
>
> Adding support for using multiple cameras, bugfixing, and integrating work from
> others, and now doing the legwork to strip the more complete DTS and make it
> into a mainlainable state, so that collaboration can continue in the mainline
> tree.
>
> AFAIK, at this point (after stripdown), most of the work comes from Icenowy.
> With some people contributing "smaller" things. I say "smaller" in quotes, since
> I know that there can be a weekend of debugging behind changing a 2-3 lines, and
> don't want to minimize anyone's contribution.
>
> IANAL and I don't know what's entirely apropriate to do here. I've disucssed
> this briefly on the IRC with involved people (that are also CCed in this
> series), and there was a suggestion to adding a bunch of Cob/SoB tags, based on
> some even older DTS file for dontbeevil (developer kit for PinePhone), that the
> Icenowy's file was based on. So I did.
>
> The more copyright holders the better, I guess. :) So if CCed people want to
> be added here, and made the contribution to the present file, please state
> so for the record again here on the mailing list, and I'll add you to the
> header, or anywhere you wish.
>
Yes please :), I have at least some i2c sensor nodes in this file,
probably also a bunch of other minor changes but it's pretty hard to
track through the history of the various files and branches.
>>> +#include "sun50i-a64.dtsi"
>>> +#include "sun50i-a64-cpu-opp.dtsi"
>>> +
>>> +#include <dt-bindings/gpio/gpio.h>
>>> +#include <dt-bindings/input/input.h>
>>> +#include <dt-bindings/leds/common.h>
>>> +#include <dt-bindings/pwm/pwm.h>
>>> +
>>> +/ {
>>> + aliases {
>>> + serial0 = &uart0;
>>> + };
>>> +
>>> + chosen {
>>> + stdout-path = "serial0:115200n8";
>>> + };
>>> +
>>> + leds {
>>> + compatible = "gpio-leds";
>>> +
>>> + blue {
>>> + function = LED_FUNCTION_INDICATOR;
>>> + function-enumerator = <1>;
>>> + color = <LED_COLOR_ID_BLUE>;
>>> + gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */
>>> + };
>>> +
>>> + green {
>>> + function = LED_FUNCTION_INDICATOR;
>>> + function-enumerator = <2>;
>>> + color = <LED_COLOR_ID_GREEN>;
>>> + gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */
>>> + };
>>> +
>>> + red {
>>> + function = LED_FUNCTION_INDICATOR;
>>> + function-enumerator = <3>;
>>> + color = <LED_COLOR_ID_RED>;
>>> + gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */
>>> + };
>>> + };
>>
>> LEDs should be named using the $color:$board:$usage pattern
>
> Do you mean using a label? It seems label is deprecated, and bindings should
> start using function/function-enumerator/color properties now:
>
> https://elixir.bootlin.com/linux/v5.6-rc2/source/Documentation/devicetree/bindings/leds/common.yaml#L57
>
> It doesn't look like the new bindings are used much, yet. I've found:
>
> https://elixir.bootlin.com/linux/v5.6-rc2/source/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
>
> and
>
> https://elixir.bootlin.com/linux/v5.6-rc2/source/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi#L96
>
> On PinePhone these are indicator leds with no pre-defined meaning, for
> use by the apps to indicate things like a new SMS, or missed call, or
> whatever people desire.
>
>>> +
>>> + speaker_amp: audio-amplifier {
>>> + compatible = "simple-audio-amplifier";
>>> + enable-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
>>> + sound-name-prefix = "Speaker Amp";
>>> + };
>>> +
>>> + vibrator {
>>> + compatible = "gpio-vibrator";
>>> + enable-gpios = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */
>>> + vcc-supply = <®_dcdc1>;
>>> + };
>>> +};
>>> +
>>> +&codec {
>>> + status = "okay";
>>> +};
>>> +
>>> +&codec_analog {
>>> + cpvdd-supply = <®_eldo1>;
>>> + status = "okay";
>>> +};
>>> +
>>> +&cpu0 {
>>> + cpu-supply = <®_dcdc2>;
>>> +};
>>> +
>>> +&cpu1 {
>>> + cpu-supply = <®_dcdc2>;
>>> +};
>>> +
>>> +&cpu2 {
>>> + cpu-supply = <®_dcdc2>;
>>> +};
>>> +
>>> +&cpu3 {
>>> + cpu-supply = <®_dcdc2>;
>>> +};
>>> +
>>> +&dai {
>>> + status = "okay";
>>> +};
>>> +
>>> +&ehci0 {
>>> + status = "okay";
>>> +};
>>> +
>>> +&ehci1 {
>>> + status = "okay";
>>> +};
>>> +
>>> +&i2c1 {
>>> + pinctrl-names = "default";
>>> + pinctrl-0 = <&i2c1_pins>;
>>
>> That's the default
>
> Ok.
>
>>> + status = "okay";
>>> +
>>> + /* Magnetometer */
>>> + lis3mdl@1e {
>>> + compatible = "st,lis3mdl-magn";
>>> + reg = <0x1e>;
>>> + vdd-supply = <®_dldo1>;
>>> + vddio-supply = <®_dldo1>;
>>> + };
>>> +
>>> + /* Accelerometer/gyroscope */
>>> + mpu6050@68 {
>>> + compatible = "invensense,mpu6050";
>>> + reg = <0x68>;
>>> + interrupt-parent = <&pio>;
>>> + interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
>>> + vdd-supply = <®_dldo1>;
>>> + vddio-supply = <®_dldo1>;
>>> + };
>>> +};
>>> +
>>> +/* Connected to pogo pins */
>>> +&i2c2 {
>>> + pinctrl-names = "default";
>>> + pinctrl-0 = <&i2c2_pins>;
>>
>> That's the default as well
>
> Actually it is not. There's not i2c2_pins at all in the mainline yet.
>
>>> + status = "okay";
>>> +};
>>
>> And I'm not sure what the pogo pins are?
>
> It's a common name for spring-loaded pin headers that can be used to connect the
> phone to auxiliary devices. 6 pins are visible on this image near the top:
>
> https://wiki.pine64.org/index.php/File:PinePhone_switches.jpeg
>
>>> +
>>> +&lradc {
>>> + vref-supply = <®_aldo3>;
>>> + status = "okay";
>>> +
>>> + button-200 {
>>> + label = "Volume Up";
>>> + linux,code = <KEY_VOLUMEUP>;
>>> + channel = <0>;
>>> + voltage = <200000>;
>>> + };
>>> +
>>> + button-400 {
>>> + label = "Volume Down";
>>> + linux,code = <KEY_VOLUMEDOWN>;
>>> + channel = <0>;
>>> + voltage = <400000>;
>>> + };
>>> +};
>>> +
>>> +&mmc0 {
>>> + pinctrl-names = "default";
>>> + pinctrl-0 = <&mmc0_pins>;
>>
>> That's the default
>
> Ok.
>
>>> + vmmc-supply = <®_dcdc1>;
>>> + vqmmc-supply = <®_dcdc1>;
>>> + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
>>> + disable-wp;
>>> + bus-width = <4>;
>>> + status = "okay";
>>> +};
>>> +
>>> +&mmc2 {
>>> + pinctrl-names = "default";
>>> + pinctrl-0 = <&mmc2_pins>;
>>
>> Ditto
>
> Will remove.
>
>>> + vmmc-supply = <®_dcdc1>;
>>> + vqmmc-supply = <®_dcdc1>;
>>> + bus-width = <8>;
>>> + non-removable;
>>> + cap-mmc-hw-reset;
>>> + status = "okay";
>>> +};
>>> +
>>> +&ohci0 {
>>> + status = "okay";
>>> +};
>>> +
>>> +&ohci1 {
>>> + status = "okay";
>>> +};
>>> +
>>> +&pio {
>>> + vcc-pb-supply = <®_dcdc1>;
>>> + vcc-pc-supply = <®_dcdc1>;
>>> + vcc-pd-supply = <®_dcdc1>;
>>> + vcc-pe-supply = <®_aldo1>;
>>> + vcc-pf-supply = <®_dcdc1>;
>>> + vcc-pg-supply = <®_dldo4>;
>>> + vcc-ph-supply = <®_dcdc1>;
>>> +};
>>> +
>>> +&r_pio {
>>> + /*
>>> + * FIXME: We can't add that supply for now since it would
>>> + * create a circular dependency between pinctrl, the regulator
>>> + * and the RSB Bus.
>>> + *
>>> + * vcc-pl-supply = <®_aldo2>;
>>> + */
>>> +};
>>> +
>>> +&r_rsb {
>>> + status = "okay";
>>> +
>>> + axp803: pmic@3a3 {
>>> + compatible = "x-powers,axp803";
>>> + reg = <0x3a3>;
>>> + interrupt-parent = <&r_intc>;
>>> + interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
>>> + };
>>> +};
>>> +
>>> +#include "axp803.dtsi"
>>> +
>>> +&ac_power_supply {
>>> + status = "okay";
>>> +};
>>> +
>>> +&battery_power_supply {
>>> + status = "okay";
>>> +};
>>> +
>>> +®_aldo1 {
>>> + regulator-min-microvolt = <1800000>;
>>> + regulator-max-microvolt = <1800000>;
>>> + regulator-name = "dovdd-csi";
>>> +};
>>> +
>>> +®_aldo2 {
>>> + regulator-always-on;
>>> + regulator-min-microvolt = <1800000>;
>>> + regulator-max-microvolt = <1800000>;
>>> + regulator-name = "vcc-pl";
>>> +};
>>> +
>>> +®_aldo3 {
>>> + regulator-always-on;
>>> + regulator-min-microvolt = <2700000>;
>>> + regulator-max-microvolt = <3300000>;
>>> + 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 = <1000000>;
>>> + regulator-max-microvolt = <1300000>;
>>> + regulator-name = "vdd-cpux";
>>> +};
>>> +
>>> +/* DCDC3 is polyphased with DCDC2 */
>>> +
>>> +®_dcdc5 {
>>> + regulator-always-on;
>>> + regulator-min-microvolt = <1200000>;
>>> + regulator-max-microvolt = <1200000>;
>>> + regulator-name = "vcc-dram";
>>> +};
>>> +
>>> +®_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-dsi-sensor";
>>> +};
>>> +
>>> +®_dldo2 {
>>> + regulator-min-microvolt = <1800000>;
>>> + regulator-max-microvolt = <1800000>;
>>> + regulator-name = "vcc-mipi-io";
>>> +};
>>> +
>>> +®_dldo3 {
>>> + regulator-min-microvolt = <2800000>;
>>> + regulator-max-microvolt = <2800000>;
>>> + regulator-name = "avdd-csi";
>>> +};
>>> +
>>> +®_dldo4 {
>>> + regulator-min-microvolt = <1800000>;
>>> + regulator-max-microvolt = <3300000>;
>>> + regulator-name = "vcc-wifi-io";
>>> +};
>>> +
>>> +®_eldo1 {
>>> + regulator-always-on;
>>> + regulator-min-microvolt = <1800000>;
>>> + regulator-max-microvolt = <1800000>;
>>> + regulator-name = "vcc-lpddr";
>>> +};
>>> +
>>> +®_eldo3 {
>>> + regulator-min-microvolt = <1800000>;
>>> + regulator-max-microvolt = <1800000>;
>>> + regulator-name = "dvdd-1v8-csi";
>>> +};
>>> +
>>> +®_fldo1 {
>>> + regulator-min-microvolt = <1200000>;
>>> + regulator-max-microvolt = <1200000>;
>>> + regulator-name = "vcc-1v2-hsic";
>>> +};
>>> +
>>> +®_fldo2 {
>>> + regulator-always-on;
>>> + regulator-min-microvolt = <1100000>;
>>> + regulator-max-microvolt = <1100000>;
>>> + regulator-name = "vdd-cpus";
>>> +};
>>> +
>>> +®_ldo_io0 {
>>> + regulator-min-microvolt = <3300000>;
>>> + regulator-max-microvolt = <3300000>;
>>> + regulator-name = "vcc-lcd-ctp-stk";
>>> + status = "okay";
>>> +};
>>> +
>>> +®_ldo_io1 {
>>> + regulator-min-microvolt = <1800000>;
>>> + regulator-max-microvolt = <1800000>;
>>> + regulator-name = "vcc-1v8-typec";
>>> + status = "okay";
>>> +};
>>> +
>>> +®_rtc_ldo {
>>> + regulator-name = "vcc-rtc";
>>> +};
>>> +
>>> +&sound {
>>> + status = "okay";
>>> + simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
>>> + simple-audio-card,widgets = "Microphone", "Headset Microphone",
>>> + "Microphone", "Internal Microphone",
>>> + "Headphone", "Headphone Jack",
>>> + "Speaker", "Internal Earpiece",
>>> + "Speaker", "Internal Speaker";
>>> + simple-audio-card,routing =
>>> + "Headphone Jack", "HP",
>>> + "Internal Earpiece", "EARPIECE",
>>> + "Internal Speaker", "Speaker Amp OUTL",
>>> + "Internal Speaker", "Speaker Amp OUTR",
>>> + "Speaker Amp INL", "LINEOUT",
>>> + "Speaker Amp INR", "LINEOUT",
>>> + "Left DAC", "AIF1 Slot 0 Left",
>>> + "Right DAC", "AIF1 Slot 0 Right",
>>> + "AIF1 Slot 0 Left ADC", "Left ADC",
>>> + "AIF1 Slot 0 Right ADC", "Right ADC",
>>> + "Internal Microphone", "MBIAS",
>>> + "MIC1", "Internal Microphone",
>>> + "Headset Microphone", "HBIAS",
>>> + "MIC2", "Headset Microphone";
>>> +};
>>> +
>>> +&uart0 {
>>> + pinctrl-names = "default";
>>> + pinctrl-0 = <&uart0_pb_pins>;
>>> + status = "okay";
>>> +};
>>> +
>>> +/* Connected to the modem */
>>> +&uart3 {
>>> + pinctrl-names = "default";
>>> + pinctrl-0 = <&uart3_pins>;
>>
>> That's the default too, and I guess you'd need hardware flow control
>> here?
>
> Hardware flow control is routed badly on the board, and can't be used at the
> moment on any of the submitted versions. It may be added in 1.2.
>
>>> + status = "okay";
>>> +};
>>> +
>>> +&usb_otg {
>>> + dr_mode = "peripheral";
>>> + status = "okay";
>>> +};
>>> +
>>> +&usb_power_supply {
>>> + status = "okay";
>>> +};
>>> +
>>> +&usbphy {
>>> + status = "okay";
>>> +};
>>> --
>>> 2.25.1
>>>
>>
>> Looks good otherwise, thanks!
>> Maxime
>
> Thank you for the review. :)
>
> regards,
> o.
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] dt-bindings: arm: sunxi: Add PinePhone 1.0 and 1.1 bindings
2020-02-23 17:29 ` [PATCH 2/3] dt-bindings: arm: sunxi: Add PinePhone 1.0 and 1.1 bindings Ondrej Jirman
@ 2020-02-26 22:31 ` Rob Herring
0 siblings, 0 replies; 10+ messages in thread
From: Rob Herring @ 2020-02-26 22:31 UTC (permalink / raw)
To: Ondrej Jirman
Cc: linux-sunxi, Chen-Yu Tsai, Ondrej Jirman, Mark Rutland,
Corentin Labbe, Georgii Staroselskii, Samuel Holland,
Martijn Braam, Luca Weiss, Bhushan Shah, Icenowy Zheng,
devicetree, linux-arm-kernel, linux-kernel
On Sun, 23 Feb 2020 18:29:15 +0100, Ondrej Jirman wrote:
> Document board compatible names for Pine64 PinePhone:
>
> - 1.0 - Developer variant
> - 1.1 - Braveheart variant
>
> Signed-off-by: Ondrej Jirman <megous@megous.com>
> ---
> Documentation/devicetree/bindings/arm/sunxi.yaml | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-02-26 22:31 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-23 17:29 [PATCH 0/3] Add support for Pine64 PinePhone Linux Smartphone Ondrej Jirman
2020-02-23 17:29 ` [PATCH 1/3] arm64: dts: sun50i-a64: Add i2c2 pins Ondrej Jirman
2020-02-24 11:01 ` Maxime Ripard
2020-02-24 12:59 ` Ondřej Jirman
2020-02-23 17:29 ` [PATCH 2/3] dt-bindings: arm: sunxi: Add PinePhone 1.0 and 1.1 bindings Ondrej Jirman
2020-02-26 22:31 ` Rob Herring
2020-02-23 17:29 ` [PATCH 3/3] arm64: dts: allwinner: Add initial support for Pine64 PinePhone Ondrej Jirman
2020-02-24 11:00 ` Maxime Ripard
2020-02-24 12:56 ` Ondřej Jirman
2020-02-24 16:58 ` Martijn Braam
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).