Skip to contentSkip to conversation

Add support for Pinebook

PATCH Superseded Vasily Khoruzhick 5 participants 15 messages Oct 28, 2018 – Nov 5, 2018

Subsystems (5)

v4 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

v4 cover Add support for Pinebook

This series adds support for the Pinebook, an allwinner A64 laptop produced by Pine64. It also syncs sun50i-a64.dtsi with linux, adds support for mmc delay calibration, R_I2C controller, and addresses the issue with activating video bridge when any of GPIOs is missing.

v2: - sync sun50i-a64.dtsi with linux instead of adding missing nodes
- take sun50i-a64-pinebook.dts from linux
- don't introduce new Kconfig for A64 MMC calibration
- improve code in video bridge uclass to check for presensce of GPIO instead of ingoring EINVAL errors
v3: - enable calibration for H6 as well
- init ret variable in video_bridge_set_active()
- fix order of dts files Makefile
- split anx6345 binding into sun50i-a64-pinebook-u-boot.dts
- drop speaker_amp node from pinebook dts
- drop unnecessary options from defconfig
v4: - sync device tree files with linux-next

Vasily Khoruzhick (5):
mmc: sunxi: add support for automatic delay calibration
dm: video: bridge: don't fail to activate bridge if reset or sleep
GPIO is missing
sunxi: DT: A64: update device tree files for Allwinner A64 SoC
sun50i: A64: add support for R_I2C controller
sunxi: DT: add support for Pinebook

 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-amarula-relic.dts    | 168 +++++++++-
 arch/arm/dts/sun50i-a64-bananapi-m64.dts     |  34 +-
 arch/arm/dts/sun50i-a64-nanopi-a64.dts       |  89 +++++-
 arch/arm/dts/sun50i-a64-olinuxino.dts        | 103 +++++-
 arch/arm/dts/sun50i-a64-orangepi-win.dts     | 179 ++++++++++-
 arch/arm/dts/sun50i-a64-pine64.dts           |  32 +-
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294 +++++++++++++++++
 arch/arm/dts/sun50i-a64-sopine-baseboard.dts |  32 +-
 arch/arm/dts/sun50i-a64-sopine.dtsi          |  15 +
 arch/arm/dts/sun50i-a64.dtsi                 | 313 +++++++++++++++++--
 arch/arm/include/asm/arch-sunxi/gpio.h       |   1 +
 arch/arm/include/asm/arch-sunxi/mmc.h        |   6 +-
 arch/arm/mach-sunxi/Kconfig                  |   1 +
 board/sunxi/board.c                          |   6 +
 configs/pinebook_defconfig                   |  22 ++
 drivers/mmc/sunxi_mmc.c                      |  21 +-
 drivers/video/bridge/video-bridge-uclass.c   |  16 +-
 19 files changed, 1296 insertions(+), 52 deletions(-)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
Signature · 1 line
2.19.1
#1 lore raw

PATCH v4 1/5 mmc: sunxi: add support for automatic delay calibration

A64 and H6 support automatic delay calibration and Linux driver uses it instead of hardcoded delays. Add support for it to u-boot driver.

Fixes eMMC instability on Pinebook

---
 arch/arm/include/asm/arch-sunxi/mmc.h |  6 +++++-
 drivers/mmc/sunxi_mmc.c               | 21 ++++++++++++++++++++-
 2 files changed, 25 insertions(+), 2 deletions(-)
arch/arm/include/asm/arch-sunxi/mmc.h +5 -1
index d98c53faaa..f2deafddd2 100644
@@ -46,7 +46,9 @@ struct sunxi_mmc {
 	u32 cbda;		/* 0x94 */
 	u32 res2[26];
 #if defined(CONFIG_SUNXI_GEN_SUN6I) || defined(CONFIG_MACH_SUN50I_H6)
-	u32 res3[64];
+	u32 res3[17];
+	u32 samp_dl;
+	u32 res4[46];
 #endif
 	u32 fifo;		/* 0x100 / 0x200 FIFO access address */
 };
@@ -130,5 +132,7 @@ struct sunxi_mmc {
 #define SUNXI_MMC_COMMON_CLK_GATE		(1 << 16)
 #define SUNXI_MMC_COMMON_RESET			(1 << 18)
 
+#define SUNXI_MMC_CAL_DL_SW_EN		(0x1 << 7)
+
 struct mmc *sunxi_mmc_init(int sdc_no);
 #endif /* _SUNXI_MMC_H */
drivers/mmc/sunxi_mmc.c +20 -1
index 39f15eb423..147eb9b4d5 100644
@@ -99,11 +99,16 @@ static int mmc_set_mod_clk(struct sunxi_mmc_priv *priv, unsigned int hz)
 {
 	unsigned int pll, pll_hz, div, n, oclk_dly, sclk_dly;
 	bool new_mode = false;
+	bool calibrate = false;
 	u32 val = 0;
 
 	if (IS_ENABLED(CONFIG_MMC_SUNXI_HAS_NEW_MODE) && (priv->mmc_no == 2))
 		new_mode = true;
 
+#if defined(CONFIG_MACH_SUN50I) || defined(CONFIG_MACH_SUN50I_H6)
+	calibrate = true;
+#endif
+
 	/*
 	 * The MMC clock has an extra /2 post-divider when operating in the new
 	 * mode.
@@ -174,7 +179,11 @@ static int mmc_set_mod_clk(struct sunxi_mmc_priv *priv, unsigned int hz)
 		val = CCM_MMC_CTRL_MODE_SEL_NEW;
 		setbits_le32(&priv->reg->ntsr, SUNXI_MMC_NTSR_MODE_SEL_NEW);
 #endif
-	} else {
+	} else if (!calibrate) {
+		/*
+		 * Use hardcoded delay values if controller doesn't support
+		 * calibration
+		 */
 		val = CCM_MMC_CTRL_OCLK_DLY(oclk_dly) |
 			CCM_MMC_CTRL_SCLK_DLY(sclk_dly);
 	}
@@ -228,6 +237,16 @@ static int mmc_config_clock(struct sunxi_mmc_priv *priv, struct mmc *mmc)
 	rval &= ~SUNXI_MMC_CLK_DIVIDER_MASK;
 	writel(rval, &priv->reg->clkcr);
 
+#if defined(CONFIG_MACH_SUN50I) || defined(CONFIG_MACH_SUN50I_H6)
+	/* A64 supports calibration of delays on MMC controller and we
+	 * have to set delay of zero before starting calibration.
+	 * Allwinner BSP driver sets a delay only in the case of
+	 * using HS400 which is not supported by mainline U-Boot or
+	 * Linux at the moment
+	 */
+	writel(SUNXI_MMC_CAL_DL_SW_EN, &priv->reg->samp_dl);
+#endif
+
 	/* Re-enable Clock */
 	rval |= SUNXI_MMC_CLK_ENABLE;
 	writel(rval, &priv->reg->clkcr);
Signature · 1 line
2.19.1
#2 lore raw

PATCH v4 2/5 dm: video: bridge: don't fail to activate bridge if reset or sleep GPIO is missing

In reply to Vasily Khoruzhick

Both GPIOs are optional, so we shouldn't fail if any is missing. Without this fix reset is not deasserted if sleep GPIO is missing.

---
 drivers/video/bridge/video-bridge-uclass.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)
drivers/video/bridge/video-bridge-uclass.c +11 -5
index cd4959cc71..5fecb4cfd5 100644
@@ -106,13 +106,19 @@ static int video_bridge_pre_probe(struct udevice *dev)
 int video_bridge_set_active(struct udevice *dev, bool active)
 {
 	struct video_bridge_priv *uc_priv = dev_get_uclass_priv(dev);
-	int ret;
+	int ret = 0;
 
 	debug("%s: %d\n", __func__, active);
-	ret = dm_gpio_set_value(&uc_priv->sleep, !active);
-	if (ret)
-		return ret;
-	if (active) {
+	if (uc_priv->sleep.dev) {
+		ret = dm_gpio_set_value(&uc_priv->sleep, !active);
+		if (ret)
+			return ret;
+	}
+
+	if (!active)
+		return 0;
+
+	if (uc_priv->reset.dev) {
 		ret = dm_gpio_set_value(&uc_priv->reset, true);
 		if (ret)
 			return ret;
Signature · 1 line
2.19.1
#3 lore raw

PATCH v4 3/5 sunxi: DT: A64: update device tree files for Allwinner A64 SoC

In reply to Vasily Khoruzhick

Updates the device tree files from the linux-next tree, exactly Linux commit:

commit 8c60c36d0b8c (tag: next-20181019)
Author: Stephen Rothwell <[email protected]>
Date: Fri Oct 19 18:13:43 2018 +1100

Add linux-next specific files for 20181019

---
 arch/arm/dts/sun50i-a64-amarula-relic.dts    | 168 +++++++++-
 arch/arm/dts/sun50i-a64-bananapi-m64.dts     |  34 +-
 arch/arm/dts/sun50i-a64-nanopi-a64.dts       |  89 +++++-
 arch/arm/dts/sun50i-a64-olinuxino.dts        | 103 +++++-
 arch/arm/dts/sun50i-a64-orangepi-win.dts     | 179 ++++++++++-
 arch/arm/dts/sun50i-a64-pine64.dts           |  32 +-
 arch/arm/dts/sun50i-a64-sopine-baseboard.dts |  32 +-
 arch/arm/dts/sun50i-a64-sopine.dtsi          |  15 +
 arch/arm/dts/sun50i-a64.dtsi                 | 313 +++++++++++++++++--
 9 files changed, 920 insertions(+), 45 deletions(-)
arch/arm/dts/sun50i-a64-amarula-relic.dts +161 -7
index f3b4e93ece..6cb2b7f0c8 100644
@@ -22,11 +22,11 @@
 		stdout-path = "serial0:115200n8";
 	};
 
-	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";
+		clocks = <&rtc 1>;
+		clock-names = "ext_clock";
+		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* WL-PMU-EN: PL2 */
 	};
 };
 
@@ -34,10 +34,34 @@
 	status = "okay";
 };
 
+&mmc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc1_pins>;
+	vmmc-supply = <&reg_dcdc1>;
+	/*
+	 * Schematic shows both dldo4 and eldo1 connected for vcc-io-wifi, but
+	 * dldo4 connection shows DNP(Do Not Populate) and eldo1 connected with
+	 * 0Ohm register to vcc-io-wifi so eldo1 is used.
+	 */
+	vqmmc-supply = <&reg_eldo1>;
+	mmc-pwrseq = <&wifi_pwrseq>;
+	bus-width = <4>;
+	non-removable;
+	status = "okay";
+
+	brcmf: wifi at 1 {
+		reg = <1>;
+		compatible = "brcm,bcm4329-fmac";
+		interrupt-parent = <&r_pio>;
+		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>;	/* WL-WAKE-AP: PL3 */
+		interrupt-names = "host-wake";
+	};
+};
+
 &mmc2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc2_pins>;
-	vmmc-supply = <&reg_vcc3v3>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <8>;
 	non-removable;
 	cap-mmc-hw-reset;
@@ -48,9 +72,138 @@
 	status = "okay";
 };
 
+&r_rsb {
+	status = "okay";
+
+	axp803: pmic at 3a3 {
+		compatible = "x-powers,axp803";
+		reg = <0x3a3>;
+		interrupt-parent = <&r_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+		x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
+	};
+};
+
+#include "axp803.dtsi"
+
+&reg_aldo1 {
+	regulator-always-on;
+	regulator-min-microvolt = <2800000>;
+	regulator-max-microvolt = <2800000>;
+	regulator-name = "avdd-csi";
+};
+
+&reg_aldo2 {
+	regulator-always-on;
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-pl";
+};
+
+&reg_aldo3 {
+	regulator-always-on;
+	regulator-min-microvolt = <3000000>;
+	regulator-max-microvolt = <3000000>;
+	regulator-name = "vcc-pll-avcc";
+};
+
+&reg_dcdc1 {
+	regulator-always-on;
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-3v3";
+};
+
+&reg_dcdc2 {
+	regulator-always-on;
+	regulator-min-microvolt = <1040000>;
+	regulator-max-microvolt = <1300000>;
+	regulator-name = "vdd-cpux";
+};
+
+/* DCDC3 is polyphased with DCDC2 */
+
+&reg_dcdc5 {
+	regulator-always-on;
+	regulator-min-microvolt = <1500000>;
+	regulator-max-microvolt = <1500000>;
+	regulator-name = "vcc-dram";
+};
+
+&reg_dcdc6 {
+	regulator-always-on;
+	regulator-min-microvolt = <1100000>;
+	regulator-max-microvolt = <1100000>;
+	regulator-name = "vdd-sys";
+};
+
+&reg_dldo1 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-hdmi-dsi-sensor";
+};
+
+&reg_dldo2 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-mipi";
+};
+
+&reg_dldo3 {
+	regulator-min-microvolt = <2800000>;
+	regulator-max-microvolt = <2800000>;
+	regulator-name = "dovdd-csi";
+};
+
+&reg_dldo4 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-wifi-io";
+};
+
+&reg_drivevbus {
+	regulator-name = "usb0-vbus";
+	status = "okay";
+};
+
+&reg_eldo1 {
+	regulator-always-on;
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-name = "cpvdd";
+};
+
+&reg_eldo3 {
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-name = "dvdd-csi";
+};
+
+&reg_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.
+ */
+&reg_fldo2 {
+	regulator-always-on;
+	regulator-min-microvolt = <1100000>;
+	regulator-max-microvolt = <1100000>;
+	regulator-name = "vdd-cpus";
+};
+
+&reg_rtc_ldo {
+	regulator-name = "vcc-rtc";
+};
+
 &uart0 {
 	pinctrl-names = "default";
-	pinctrl-0 = <&uart0_pins_a>;
+	pinctrl-0 = <&uart0_pb_pins>;
 	status = "okay";
 };
 
@@ -61,5 +214,6 @@
 
 &usbphy {
 	usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
+	usb0_vbus-supply = <&reg_drivevbus>;
 	status = "okay";
 };
arch/arm/dts/sun50i-a64-bananapi-m64.dts +32 -2
index 0716b14411..ef1c90401b 100644
@@ -60,6 +60,17 @@
 		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";
 
@@ -86,6 +97,10 @@
 	};
 };
 
+&de {
+	status = "okay";
+};
+
 &ehci0 {
 	status = "okay";
 };
@@ -103,6 +118,17 @@
 	status = "okay";
 };
 
+&hdmi {
+	hvcc-supply = <&reg_dldo1>;
+	status = "okay";
+};
+
+&hdmi_out {
+	hdmi_out_con: endpoint {
+		remote-endpoint = <&hdmi_con_in>;
+	};
+};
+
 &i2c1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&i2c1_pins>;
@@ -151,7 +177,7 @@
 
 &mmc2 {
 	pinctrl-names = "default";
-	pinctrl-0 = <&mmc2_pins>;
+	pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
 	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <8>;
 	non-removable;
@@ -296,9 +322,13 @@
 	regulator-name = "vcc-rtc";
 };
 
+&simplefb_hdmi {
+	vcc-hdmi-supply = <&reg_dldo1>;
+};
+
 &uart0 {
 	pinctrl-names = "default";
-	pinctrl-0 = <&uart0_pins_a>;
+	pinctrl-0 = <&uart0_pb_pins>;
 	status = "okay";
 };
 
arch/arm/dts/sun50i-a64-nanopi-a64.dts +85 -4

133 lines not on this page · raw message

arch/arm/dts/sun50i-a64-olinuxino.dts +100 -3

154 lines not on this page · raw message

arch/arm/dts/sun50i-a64-orangepi-win.dts +173 -6

235 lines not on this page · raw message

arch/arm/dts/sun50i-a64-pine64.dts +31 -1
index a75825798a..c077b6c1f4 100644
@@ -62,6 +62,21 @@
 	chosen {
 		stdout-path = "serial0:115200n8";
 	};
+
+	hdmi-connector {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con_in: endpoint {
+				remote-endpoint = <&hdmi_out_con>;
+			};
+		};
+	};
+};
+
+&de {
+	status = "okay";
 };
 
 &ehci0 {
@@ -82,6 +97,17 @@
 
 };
 
+&hdmi {
+	hvcc-supply = <&reg_dldo1>;
+	status = "okay";
+};
+
+&hdmi_out {
+	hdmi_out_con: endpoint {
+		remote-endpoint = <&hdmi_con_in>;
+	};
+};
+
 &i2c1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&i2c1_pins>;
@@ -229,6 +255,10 @@
 	regulator-name = "vcc-rtc";
 };
 
+&simplefb_hdmi {
+	vcc-hdmi-supply = <&reg_dldo1>;
+};
+
 /* On Euler connector */
 &spdif {
 	status = "disabled";
@@ -237,7 +267,7 @@
 /* On Exp and Euler connectors */
 &uart0 {
 	pinctrl-names = "default";
-	pinctrl-0 = <&uart0_pins_a>;
+	pinctrl-0 = <&uart0_pb_pins>;
 	status = "okay";
 };
 
arch/arm/dts/sun50i-a64-sopine-baseboard.dts +31 -1
index abe179de35..53fcc9098d 100644
@@ -61,6 +61,17 @@
 		stdout-path = "serial0:115200n8";
 	};
 
+	hdmi-connector {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con_in: endpoint {
+				remote-endpoint = <&hdmi_out_con>;
+			};
+		};
+	};
+
 	reg_vcc1v8: vcc1v8 {
 		compatible = "regulator-fixed";
 		regulator-name = "vcc1v8";
@@ -69,6 +80,10 @@
 	};
 };
 
+&de {
+	status = "okay";
+};
+
 &ehci0 {
 	status = "okay";
 };
@@ -86,6 +101,17 @@
 	status = "okay";
 };
 
+&hdmi {
+	hvcc-supply = <&reg_dldo1>;
+	status = "okay";
+};
+
+&hdmi_out {
+	hdmi_out_con: endpoint {
+		remote-endpoint = <&hdmi_con_in>;
+	};
+};
+
 &mdio {
 	ext_rgmii_phy: ethernet-phy at 1 {
 		compatible = "ethernet-phy-ieee802.3-c22";
@@ -134,9 +160,13 @@
 	regulator-name = "vcc-wifi";
 };
 
+&simplefb_hdmi {
+	vcc-hdmi-supply = <&reg_dldo1>;
+};
+
 &uart0 {
 	pinctrl-names = "default";
-	pinctrl-0 = <&uart0_pins_a>;
+	pinctrl-0 = <&uart0_pb_pins>;
 	status = "okay";
 };
 
arch/arm/dts/sun50i-a64-sopine.dtsi +15 -0
index 43418bd881..6723b8695e 100644
@@ -45,6 +45,8 @@
 
 #include "sun50i-a64.dtsi"
 
+#include <dt-bindings/gpio/gpio.h>
+
 &mmc0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>;
@@ -52,6 +54,7 @@
 	non-removable;
 	disable-wp;
 	bus-width = <4>;
+	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
 	status = "okay";
 };
 
@@ -66,6 +69,18 @@
 	};
 };
 
+&spi0  {
+	status = "okay";
+
+	flash at 0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <40000000>;
+	};
+};
+
 #include "axp803.dtsi"
 
 &reg_aldo2 {
arch/arm/dts/sun50i-a64.dtsi +292 -21

431 lines not on this page · raw message

Signature · 1 line
2.19.1
#4 lore raw

PATCH v4 4/5 sun50i: A64: add support for R_I2C controller

In reply to Vasily Khoruzhick

Allwinner A64 has a I2C controller, which is in the R_ MMIO zone and has two groups of pinmuxes on PL bank, so it's called R_I2C.

Add support for this I2C controller and the pinmux which doesn't conflict with RSB.

---
 arch/arm/include/asm/arch-sunxi/gpio.h | 1 +
 arch/arm/mach-sunxi/Kconfig            | 1 +
 board/sunxi/board.c                    | 6 ++++++
 3 files changed, 8 insertions(+)
arch/arm/include/asm/arch-sunxi/gpio.h +1 -0
index 6a5eafc3d3..2daf23f6f5 100644
@@ -211,6 +211,7 @@ enum sunxi_gpio_number {
 #define SUN8I_H3_GPL_R_TWI	2
 #define SUN8I_A23_GPL_R_TWI	3
 #define SUN8I_GPL_R_UART	2
+#define SUN50I_GPL_R_TWI	2
 
 #define SUN9I_GPN_R_RSB		3
 
arch/arm/mach-sunxi/Kconfig +1 -0
index 686f38fec4..7ba429c744 100644
@@ -272,6 +272,7 @@ config MACH_SUN50I
 	select ARM64
 	select DM_I2C
 	select PHY_SUN4I_USB
+	select SUN6I_PRCM
 	select SUNXI_DE2
 	select SUNXI_GEN_SUN6I
 	select SUPPORT_SPL
board/sunxi/board.c +6 -0
index d1d7f9f400..90f8bc0a6e 100644
@@ -168,10 +168,16 @@ void i2c_init_board(void)
 #endif
 
 #ifdef CONFIG_R_I2C_ENABLE
+#ifdef CONFIG_MACH_SUN50I
+	clock_twi_onoff(5, 1);
+	sunxi_gpio_set_cfgpin(SUNXI_GPL(8), SUN50I_GPL_R_TWI);
+	sunxi_gpio_set_cfgpin(SUNXI_GPL(9), SUN50I_GPL_R_TWI);
+#else
 	clock_twi_onoff(5, 1);
 	sunxi_gpio_set_cfgpin(SUNXI_GPL(0), SUN8I_H3_GPL_R_TWI);
 	sunxi_gpio_set_cfgpin(SUNXI_GPL(1), SUN8I_H3_GPL_R_TWI);
 #endif
+#endif
 }
 
 #if defined(CONFIG_ENV_IS_IN_MMC) && defined(CONFIG_ENV_IS_IN_FAT)
Signature · 1 line
2.19.1
#5 lore raw

PATCH v4 5/5 sunxi: DT: add support for Pinebook

In reply to Vasily Khoruzhick

Pinebook is a laptop produced by Pine64, with USB-connected keyboard, USB-connected touchpad and an eDP LCD panel connected via a RGB-eDP bridge from Analogix.

---
 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294 +++++++++++++++++++
 configs/pinebook_defconfig                   |  22 ++
 4 files changed, 332 insertions(+)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
arch/arm/dts/Makefile +1 -0
index 0de6234eec..94ec15a8ac 100644
@@ -405,6 +405,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \
 	sun50i-a64-orangepi-win.dtb \
 	sun50i-a64-pine64-plus.dtb \
 	sun50i-a64-pine64.dtb \
+	sun50i-a64-pinebook.dtb \
 	sun50i-a64-sopine-baseboard.dtb
 dtb-$(CONFIG_MACH_SUN9I) += \
 	sun9i-a80-optimus.dtb \
arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi new file +15 -0
new file mode 100644
index 0000000000..a99b7171d0
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2018 Vasily Khoruzhick <[email protected]>
+ *
+ */
+
+/* The ANX6345 eDP-bridge is on r_i2c */
+&r_i2c {
+	anx6345: edp-bridge at 38 {
+		compatible = "analogix,anx6345";
+		reg = <0x38>;
+		reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
+		status = "okay";
+	};
+};
arch/arm/dts/sun50i-a64-pinebook.dts new file +294 -0

294 lines not on this page · raw message

configs/pinebook_defconfig new file +22 -0
new file mode 100644
index 0000000000..5294dbd2eb
@@ -0,0 +1,22 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_SPL=y
+CONFIG_MACH_SUN50I=y
+CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y
+CONFIG_DRAM_CLK=552
+CONFIG_DRAM_ZQ=3881949
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
+CONFIG_R_I2C_ENABLE=y
+# CONFIG_CMD_FLASH is not set
+# CONFIG_SPL_DOS_PARTITION is not set
+# CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinebook"
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_SUNXI=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
+# CONFIG_USB_GADGET is not set
+CONFIG_VIDEO_BRIDGE=y
+CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=y
Signature · 1 line
2.19.1
#6 lore raw

PATCH v4 5/5 sunxi: DT: add support for Pinebook

Hi!

Quoted 41 lines · Vasily Khoruzhick

Pinebook is a laptop produced by Pine64, with USB-connected keyboard, USB-connected touchpad and an eDP LCD panel connected via a RGB-eDP bridge from Analogix.

---
 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294 +++++++++++++++++++
 configs/pinebook_defconfig                   |  22 ++
 4 files changed, 332 insertions(+)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
arch/arm/dts/Makefile +1 -0
index 0de6234eec..94ec15a8ac 100644
@@ -405,6 +405,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \
 	sun50i-a64-orangepi-win.dtb \
 	sun50i-a64-pine64-plus.dtb \
 	sun50i-a64-pine64.dtb \
+	sun50i-a64-pinebook.dtb \
 	sun50i-a64-sopine-baseboard.dtb
 dtb-$(CONFIG_MACH_SUN9I) += \
 	sun9i-a80-optimus.dtb \
arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi new file +5 -0
new file mode 100644
index 0000000000..a99b7171d0
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2018 Vasily Khoruzhick <[email protected]>
+ *
+ */

arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi line 15

Quoted 10 lines
arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi new file +10 -0
+
+/* The ANX6345 eDP-bridge is on r_i2c */
+&r_i2c {
+	anx6345: edp-bridge at 38 {
+		compatible = "analogix,anx6345";
+		reg = <0x38>;
+		reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
+		status = "okay";
+	};
+};

Maybe I missed something but I don't see when this dtsi file is used or included.

Quoted 329 lines
arch/arm/dts/sun50i-a64-pinebook.dts new file +294 -0
new file mode 100644
index 0000000000..ec537c5297
@@ -0,0 +1,294 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2017 Icenowy Zheng <[email protected]>
+ * Copyright (C) 2018 Vasily Khoruzhick <[email protected]>
+ *
+ */
+
+/dts-v1/;
+
+#include "sun50i-a64.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+	model = "Pinebook";
+	compatible = "pine64,pinebook", "allwinner,sun50i-a64";
+
+	aliases {
+		serial0 = &uart0;
+		ethernet0 = &rtl8723cs;
+	};
+
+	vdd_bl: regulator at 0 {
+		compatible = "regulator-fixed";
+		regulator-name = "bl-3v3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
+		enable-active-high;
+	};
+
+	backlight: backlight {
+		compatible = "pwm-backlight";
+		pwms = <&pwm 0 50000 0>;
+		brightness-levels = <0 5 10 15 20 30 40 55 70 85 100>;
+		default-brightness-level = <2>;
+		enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
+		power-supply = <&vdd_bl>;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+
+		framebuffer-lcd {
+			panel-supply = <&reg_dc1sw>;
+			dvdd25-supply = <&reg_dldo2>;
+			dvdd12-supply = <&reg_fldo1>;
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+
+		lid_switch {
+			label = "Lid Switch";
+			gpios = <&r_pio 0 12 GPIO_ACTIVE_LOW>; /* PL12 */
+			linux,input-type = <EV_SW>;
+			linux,code = <SW_LID>;
+			linux,can-disable;
+			wakeup-source;
+		};
+	};
+
+	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 */
+	};
+};
+
+&ehci0 {
+	phys = <&usbphy 0>;
+	phy-names = "usb";
+	status = "okay";
+};
+
+&ehci1 {
+	status = "okay";
+};
+
+&mmc0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc0_pins>;
+	vmmc-supply = <&reg_dcdc1>;
+	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
+	disable-wp;
+	bus-width = <4>;
+	status = "okay";
+};
+
+&mmc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc1_pins>;
+	vmmc-supply = <&reg_dldo4>;
+	vqmmc-supply = <&reg_eldo1>;
+	mmc-pwrseq = <&wifi_pwrseq>;
+	bus-width = <4>;
+	non-removable;
+	status = "okay";
+
+	rtl8723cs: wifi at 1 {
+		reg = <1>;
+	};
+};
+
+&mmc2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
+	vmmc-supply = <&reg_dcdc1>;
+	vqmmc-supply = <&reg_eldo1>;
+	bus-width = <8>;
+	non-removable;
+	cap-mmc-hw-reset;
+	mmc-hs200-1_8v;
+	status = "okay";
+};
+
+&ohci0 {
+	phys = <&usbphy 0>;
+	phy-names = "usb";
+	status = "okay";
+};
+
+&ohci1 {
+	status = "okay";
+};
+
+&pwm {
+	status = "okay";
+};
+
+&r_rsb {
+	status = "okay";
+
+	axp803: pmic at 3a3 {
+		compatible = "x-powers,axp803";
+		reg = <0x3a3>;
+		interrupt-parent = <&r_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+	};
+};
+
+/* The ANX6345 eDP-bridge is on r_i2c */
+&r_i2c {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&r_i2c_pl89_pins>;
+	status = "okay";
+};
+
+#include "axp803.dtsi"
+
+&reg_aldo1 {
+	regulator-min-microvolt = <2800000>;
+	regulator-max-microvolt = <2800000>;
+	regulator-name = "vcc-csi";
+};
+
+&reg_aldo2 {
+	regulator-always-on;
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-pl";
+};
+
+&reg_aldo3 {
+	regulator-always-on;
+	regulator-min-microvolt = <2700000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-pll-avcc";
+};
+
+&reg_dc1sw {
+	regulator-name = "vcc-lcd";
+};
+
+&reg_dcdc1 {
+	regulator-always-on;
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-3v3";
+};
+
+&reg_dcdc2 {
+	regulator-always-on;
+	regulator-min-microvolt = <1000000>;
+	regulator-max-microvolt = <1300000>;
+	regulator-name = "vdd-cpux";
+};
+
+/* DCDC3 is polyphased with DCDC2 */
+
+&reg_dcdc5 {
+	regulator-always-on;
+	regulator-min-microvolt = <1200000>;
+	regulator-max-microvolt = <1200000>;
+	regulator-name = "vcc-dram";
+};
+
+&reg_dcdc6 {
+	regulator-always-on;
+	regulator-min-microvolt = <1100000>;
+	regulator-max-microvolt = <1100000>;
+	regulator-name = "vdd-sys";
+};
+
+&reg_dldo1 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-hdmi";
+};
+
+&reg_dldo2 {
+	regulator-min-microvolt = <2500000>;
+	regulator-max-microvolt = <2500000>;
+	regulator-name = "vcc-edp";
+};
+
+&reg_dldo3 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "avdd-csi";
+};
+
+&reg_dldo4 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-wifi";
+};
+
+&reg_eldo1 {
+	regulator-always-on;
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-name = "cpvdd";
+};
+
+&reg_eldo3 {
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-name = "vdd-1v8-csi";
+};
+
+&reg_fldo1 {
+	regulator-min-microvolt = <1200000>;
+	regulator-max-microvolt = <1200000>;
+	regulator-name = "vcc-1v2-hsic";
+};
+
+&reg_fldo2 {
+	regulator-always-on;
+	regulator-min-microvolt = <1100000>;
+	regulator-max-microvolt = <1100000>;
+	regulator-name = "vdd-cpus";
+};
+
+&reg_ldo_io0 {
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
+	regulator-name = "vcc-usb";
+	status = "okay";
+};
+
+&reg_rtc_ldo {
+	regulator-name = "vcc-rtc";
+};
+
+&simplefb_hdmi {
+	vcc-hdmi-supply = <&reg_dldo1>;
+};
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_pb_pins>;
+	status = "okay";
+};
+
+&usb_otg {
+	dr_mode = "host";
+};
+
+&usbphy {
+	usb0_vbus-supply = <&reg_ldo_io0>;
+	usb1_vbus-supply = <&reg_ldo_io0>;
+	status = "okay";
+};
configs/pinebook_defconfig new file +22 -0
new file mode 100644
index 0000000000..5294dbd2eb
@@ -0,0 +1,22 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_SPL=y
+CONFIG_MACH_SUN50I=y
+CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y
+CONFIG_DRAM_CLK=552
+CONFIG_DRAM_ZQ=3881949
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
+CONFIG_R_I2C_ENABLE=y
+# CONFIG_CMD_FLASH is not set
+# CONFIG_SPL_DOS_PARTITION is not set
+# CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinebook"
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_SUNXI=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
+# CONFIG_USB_GADGET is not set
+CONFIG_VIDEO_BRIDGE=y
+CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=y
Signature · 15 lines
Loic Devulder <[email protected]> | ldevulder at irc
0x175A963893C85F55 | D220 DEF5 56A3 DE00 9DAA 78BA 175A 9638 93C8 5F55
Senior QA Engineer | Container & Storage Solutions Quality Assurance
team (qa-css)
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB,
21284 (AG Nuernberg)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181029/3e93d0af/attachment.sig>
#7 lore raw

PATCH v4 5/5 sunxi: DT: add support for Pinebook

Quoted 50 lines · On Mon, 29 Oct 2018 16:29:43 +0100 Loic Devulder <[email protected]> wrote:

Hi!

Quoted 47 lines · Vasily Khoruzhick

Pinebook is a laptop produced by Pine64, with USB-connected keyboard, USB-connected touchpad and an eDP LCD panel connected via a RGB-eDP bridge from Analogix.

---
 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294
+++++++++++++++++++ configs/pinebook_defconfig                   |
22 ++ 4 files changed, 332 insertions(+)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
arch/arm/dts/Makefile +1 -0
index 0de6234eec..94ec15a8ac 100644
@@ -405,6 +405,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \
 	sun50i-a64-orangepi-win.dtb \
 	sun50i-a64-pine64-plus.dtb \
 	sun50i-a64-pine64.dtb \
+	sun50i-a64-pinebook.dtb \
 	sun50i-a64-sopine-baseboard.dtb
 dtb-$(CONFIG_MACH_SUN9I) += \
 	sun9i-a80-optimus.dtb \
(quoted diff) +0 -0

b/arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi new file mode 100644 index 0000000000..a99b7171d0

arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi new file +11 -0
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2018 Vasily Khoruzhick <[email protected]>
+ *
+ */
+
+/* The ANX6345 eDP-bridge is on r_i2c */
+&r_i2c {
+	anx6345: edp-bridge at 38 {
+		compatible = "analogix,anx6345";
+		reg = <0x38>;
Quoted 8 lines

arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi line 15

Quoted 5 lines
arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi new file +1 -0
+		reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24

*/

arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi new file +3 -0
+		status = "okay";
+	};
+};  

Maybe I missed something but I don't see when this dtsi file is used or included.

Yeah, that's some non-obvious U-Boot build magic:
Whenever there is a file which has "-u-boot.dtsi" appended to certain .dts filename stubs, U-Boot includes this file when building the .dtb. This is supposed to be used to add U-Boot specific DT nodes or properties to some otherwise unchanged (read: Linux mainline) DTs. Check scripts/Makefile.lib and search for u-boot.dtsi for the source.

Cheers,
Andre.

#8 lore raw

v4 cover Add support for Pinebook

In reply to Vasily Khoruzhick

Tested series applied to u-boot 2018.11-rc3 on pinebook, both with reboot and cold boot.

Thanks for all the work on it!

Quoted 42 lines · Vasily Khoruzhick

This series adds support for the Pinebook, an allwinner A64 laptop produced by Pine64. It also syncs sun50i-a64.dtsi with linux, adds support for mmc delay calibration, R_I2C controller, and addresses the issue with activating video bridge when any of GPIOs is missing.

v2: - sync sun50i-a64.dtsi with linux instead of adding missing nodes
- take sun50i-a64-pinebook.dts from linux
- don't introduce new Kconfig for A64 MMC calibration
- improve code in video bridge uclass to check for presensce of GPIO instead of ingoring EINVAL errors
v3: - enable calibration for H6 as well
- init ret variable in video_bridge_set_active()
- fix order of dts files Makefile
- split anx6345 binding into sun50i-a64-pinebook-u-boot.dts
- drop speaker_amp node from pinebook dts
- drop unnecessary options from defconfig
v4: - sync device tree files with linux-next

Vasily Khoruzhick (5):
mmc: sunxi: add support for automatic delay calibration
dm: video: bridge: don't fail to activate bridge if reset or sleep
GPIO is missing
sunxi: DT: A64: update device tree files for Allwinner A64 SoC
sun50i: A64: add support for R_I2C controller
sunxi: DT: add support for Pinebook

 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-amarula-relic.dts    | 168 +++++++++-
 arch/arm/dts/sun50i-a64-bananapi-m64.dts     |  34 +-
 arch/arm/dts/sun50i-a64-nanopi-a64.dts       |  89 +++++-
 arch/arm/dts/sun50i-a64-olinuxino.dts        | 103 +++++-
 arch/arm/dts/sun50i-a64-orangepi-win.dts     | 179 ++++++++++-
 arch/arm/dts/sun50i-a64-pine64.dts           |  32 +-
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294 +++++++++++++++++
 arch/arm/dts/sun50i-a64-sopine-baseboard.dts |  32 +-
 arch/arm/dts/sun50i-a64-sopine.dtsi          |  15 +
 arch/arm/dts/sun50i-a64.dtsi                 | 313 +++++++++++++++++--
 arch/arm/include/asm/arch-sunxi/gpio.h       |   1 +
 arch/arm/include/asm/arch-sunxi/mmc.h        |   6 +-
 arch/arm/mach-sunxi/Kconfig                  |   1 +
Quoted 11 lines
 board/sunxi/board.c                          |   6 +
 configs/pinebook_defconfig                   |  22 ++
 drivers/mmc/sunxi_mmc.c                      |  21 +-
 drivers/video/bridge/video-bridge-uclass.c   |  16 +-
 19 files changed, 1296 insertions(+), 52 deletions(-)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
Signature · 1 line
2.19.1

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181030/4b27f0c9/attachment.sig>

#9 lore raw

v4 cover Add support for Pinebook

I have tested the series on my pinebook on top of git commit 99431c1c21685fe63d46b6eac995b78ce9adce0a

I am not sure if video is expected to work or not, in my case it does not work.

U-Boot SPL 2018.11-rc3-00027-g77a46c3a3c (Nov 03 2018 - 13:42:47 -0500)
DRAM: 2048 MiB
Trying to boot from MMC1

NOTICE:  BL31: v1.6(release):
NOTICE:  BL31: Built : 09:10:17, Sep 23 2018
NOTICE:  BL31: Detected Allwinner A64/H64/R18 SoC (1689)
NOTICE:  BL31: STUB PMIC setup code called

U-Boot 2018.11-rc3-00027-g77a46c3a3c (Nov 03 2018 - 13:42:47 -0500) Allwinner Technology

CPU:   Allwinner A64 (SUN50I)
Model: Pinebook
DRAM:  2 GiB
MMC:   SUNXI SD/MMC: 0, SUNXI SD/MMC: 1

Loading Environment from FAT... *** Warning - bad CRC, using default environment

Warning: HDMI PHY init timeout!
Warning: HDMI PHY init timeout!
In:    serial
Out:   serial
Err:   serial

u-boot however works fine and the system is able to boot and the correct dtb is loaded.

El mar, 30-10-2018 a las 14:36 -0700, Vagrant Cascadian escribió:

Quoted 70 lines

Tested series applied to u-boot 2018.11-rc3 on pinebook, both with reboot and cold boot.

Thanks for all the work on it!

Quoted 46 lines · Vasily Khoruzhick

This series adds support for the Pinebook, an allwinner A64 laptop produced by Pine64. It also syncs sun50i-a64.dtsi with linux, adds support for mmc delay calibration, R_I2C controller, and addresses the issue with activating video bridge when any of GPIOs is missing.

v2: - sync sun50i-a64.dtsi with linux instead of adding missing nodes
- take sun50i-a64-pinebook.dts from linux
- don't introduce new Kconfig for A64 MMC calibration
- improve code in video bridge uclass to check for presensce of GPIO instead of ingoring EINVAL errors
v3: - enable calibration for H6 as well
- init ret variable in video_bridge_set_active()
- fix order of dts files Makefile
- split anx6345 binding into sun50i-a64-pinebook-u-boot.dts
- drop speaker_amp node from pinebook dts
- drop unnecessary options from defconfig
v4: - sync device tree files with linux-next

Vasily Khoruzhick (5):
mmc: sunxi: add support for automatic delay calibration
dm: video: bridge: don't fail to activate bridge if reset or
sleep
GPIO is missing
sunxi: DT: A64: update device tree files for Allwinner A64 SoC
sun50i: A64: add support for R_I2C controller
sunxi: DT: add support for Pinebook

 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-amarula-relic.dts    | 168 +++++++++-
 arch/arm/dts/sun50i-a64-bananapi-m64.dts     |  34 +-
 arch/arm/dts/sun50i-a64-nanopi-a64.dts       |  89 +++++-
 arch/arm/dts/sun50i-a64-olinuxino.dts        | 103 +++++-
 arch/arm/dts/sun50i-a64-orangepi-win.dts     | 179 ++++++++++-
 arch/arm/dts/sun50i-a64-pine64.dts           |  32 +-
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294
+++++++++++++++++
 arch/arm/dts/sun50i-a64-sopine-baseboard.dts |  32 +-
 arch/arm/dts/sun50i-a64-sopine.dtsi          |  15 +
 arch/arm/dts/sun50i-a64.dtsi                 | 313
+++++++++++++++++--
 arch/arm/include/asm/arch-sunxi/gpio.h       |   1 +
 arch/arm/include/asm/arch-sunxi/mmc.h        |   6 +-
 arch/arm/mach-sunxi/Kconfig                  |   1 +
Quoted 11 lines
 board/sunxi/board.c                          |   6 +
 configs/pinebook_defconfig                   |  22 ++
 drivers/mmc/sunxi_mmc.c                      |  21 +-
 drivers/video/bridge/video-bridge-uclass.c   |  16 +-
 19 files changed, 1296 insertions(+), 52 deletions(-)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
Signature · 1 line
2.19.1

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot

#10 lore raw

v4 cover Add support for Pinebook

Video is supposed to work, but you need ATF from Andre to enable LCD power:

https://github.com/apritzel/arm-trusted-firmware/

Quoted 109 lines · Dennis Gilmore

I have tested the series on my pinebook on top of git commit 99431c1c21685fe63d46b6eac995b78ce9adce0a

I am not sure if video is expected to work or not, in my case it does not work.

U-Boot SPL 2018.11-rc3-00027-g77a46c3a3c (Nov 03 2018 - 13:42:47 -0500)
DRAM: 2048 MiB
Trying to boot from MMC1

NOTICE:  BL31: v1.6(release):
NOTICE:  BL31: Built : 09:10:17, Sep 23 2018
NOTICE:  BL31: Detected Allwinner A64/H64/R18 SoC (1689)
NOTICE:  BL31: STUB PMIC setup code called

U-Boot 2018.11-rc3-00027-g77a46c3a3c (Nov 03 2018 - 13:42:47 -0500) Allwinner Technology

CPU:   Allwinner A64 (SUN50I)
Model: Pinebook
DRAM:  2 GiB
MMC:   SUNXI SD/MMC: 0, SUNXI SD/MMC: 1

Loading Environment from FAT... *** Warning - bad CRC, using default environment

Warning: HDMI PHY init timeout!
Warning: HDMI PHY init timeout!
In:    serial
Out:   serial
Err:   serial

u-boot however works fine and the system is able to boot and the correct dtb is loaded.

El mar, 30-10-2018 a las 14:36 -0700, Vagrant Cascadian escribió:

Quoted 70 lines

Tested series applied to u-boot 2018.11-rc3 on pinebook, both with reboot and cold boot.

Thanks for all the work on it!

Quoted 55 lines · Vasily Khoruzhick

This series adds support for the Pinebook, an allwinner A64 laptop produced by Pine64. It also syncs sun50i-a64.dtsi with linux, adds support for mmc delay calibration, R_I2C controller, and addresses the issue with activating video bridge when any of GPIOs is missing.

v2: - sync sun50i-a64.dtsi with linux instead of adding missing nodes
- take sun50i-a64-pinebook.dts from linux
- don't introduce new Kconfig for A64 MMC calibration
- improve code in video bridge uclass to check for presensce of GPIO instead of ingoring EINVAL errors
v3: - enable calibration for H6 as well
- init ret variable in video_bridge_set_active()
- fix order of dts files Makefile
- split anx6345 binding into sun50i-a64-pinebook-u-boot.dts
- drop speaker_amp node from pinebook dts
- drop unnecessary options from defconfig
v4: - sync device tree files with linux-next

Vasily Khoruzhick (5):
mmc: sunxi: add support for automatic delay calibration
dm: video: bridge: don't fail to activate bridge if reset or
sleep
GPIO is missing
sunxi: DT: A64: update device tree files for Allwinner A64 SoC
sun50i: A64: add support for R_I2C controller
sunxi: DT: add support for Pinebook

 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-amarula-relic.dts    | 168 +++++++++-
 arch/arm/dts/sun50i-a64-bananapi-m64.dts     |  34 +-
 arch/arm/dts/sun50i-a64-nanopi-a64.dts       |  89 +++++-
 arch/arm/dts/sun50i-a64-olinuxino.dts        | 103 +++++-
 arch/arm/dts/sun50i-a64-orangepi-win.dts     | 179 ++++++++++-
 arch/arm/dts/sun50i-a64-pine64.dts           |  32 +-
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294
+++++++++++++++++
 arch/arm/dts/sun50i-a64-sopine-baseboard.dts |  32 +-
 arch/arm/dts/sun50i-a64-sopine.dtsi          |  15 +
 arch/arm/dts/sun50i-a64.dtsi                 | 313
+++++++++++++++++--
 arch/arm/include/asm/arch-sunxi/gpio.h       |   1 +
 arch/arm/include/asm/arch-sunxi/mmc.h        |   6 +-
 arch/arm/mach-sunxi/Kconfig                  |   1 +
 board/sunxi/board.c                          |   6 +
 configs/pinebook_defconfig                   |  22 ++
 drivers/mmc/sunxi_mmc.c                      |  21 +-
 drivers/video/bridge/video-bridge-uclass.c   |  16 +-
 19 files changed, 1296 insertions(+), 52 deletions(-)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
Quoted 2 lines

--
2.19.1

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot

#11 lore raw

v4 cover Add support for Pinebook

Quoted 4 lines · Vasily Khoruzhick

Video is supposed to work, but you need ATF from Andre to enable LCD power:

https://github.com/apritzel/arm-trusted-firmware/

You need "allwinner" branch from this repo.

Quoted 110 lines · Dennis Gilmore
Quoted 109 lines

I have tested the series on my pinebook on top of git commit 99431c1c21685fe63d46b6eac995b78ce9adce0a

I am not sure if video is expected to work or not, in my case it does not work.

U-Boot SPL 2018.11-rc3-00027-g77a46c3a3c (Nov 03 2018 - 13:42:47 -0500)
DRAM: 2048 MiB
Trying to boot from MMC1

NOTICE:  BL31: v1.6(release):
NOTICE:  BL31: Built : 09:10:17, Sep 23 2018
NOTICE:  BL31: Detected Allwinner A64/H64/R18 SoC (1689)
NOTICE:  BL31: STUB PMIC setup code called

U-Boot 2018.11-rc3-00027-g77a46c3a3c (Nov 03 2018 - 13:42:47 -0500) Allwinner Technology

CPU:   Allwinner A64 (SUN50I)
Model: Pinebook
DRAM:  2 GiB
MMC:   SUNXI SD/MMC: 0, SUNXI SD/MMC: 1

Loading Environment from FAT... *** Warning - bad CRC, using default environment

Warning: HDMI PHY init timeout!
Warning: HDMI PHY init timeout!
In:    serial
Out:   serial
Err:   serial

u-boot however works fine and the system is able to boot and the correct dtb is loaded.

El mar, 30-10-2018 a las 14:36 -0700, Vagrant Cascadian escribió:

Quoted 70 lines

Tested series applied to u-boot 2018.11-rc3 on pinebook, both with reboot and cold boot.

Thanks for all the work on it!

Quoted 55 lines · Vasily Khoruzhick

This series adds support for the Pinebook, an allwinner A64 laptop produced by Pine64. It also syncs sun50i-a64.dtsi with linux, adds support for mmc delay calibration, R_I2C controller, and addresses the issue with activating video bridge when any of GPIOs is missing.

v2: - sync sun50i-a64.dtsi with linux instead of adding missing nodes
- take sun50i-a64-pinebook.dts from linux
- don't introduce new Kconfig for A64 MMC calibration
- improve code in video bridge uclass to check for presensce of GPIO instead of ingoring EINVAL errors
v3: - enable calibration for H6 as well
- init ret variable in video_bridge_set_active()
- fix order of dts files Makefile
- split anx6345 binding into sun50i-a64-pinebook-u-boot.dts
- drop speaker_amp node from pinebook dts
- drop unnecessary options from defconfig
v4: - sync device tree files with linux-next

Vasily Khoruzhick (5):
mmc: sunxi: add support for automatic delay calibration
dm: video: bridge: don't fail to activate bridge if reset or
sleep
GPIO is missing
sunxi: DT: A64: update device tree files for Allwinner A64 SoC
sun50i: A64: add support for R_I2C controller
sunxi: DT: add support for Pinebook

 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-amarula-relic.dts    | 168 +++++++++-
 arch/arm/dts/sun50i-a64-bananapi-m64.dts     |  34 +-
 arch/arm/dts/sun50i-a64-nanopi-a64.dts       |  89 +++++-
 arch/arm/dts/sun50i-a64-olinuxino.dts        | 103 +++++-
 arch/arm/dts/sun50i-a64-orangepi-win.dts     | 179 ++++++++++-
 arch/arm/dts/sun50i-a64-pine64.dts           |  32 +-
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294
+++++++++++++++++
 arch/arm/dts/sun50i-a64-sopine-baseboard.dts |  32 +-
 arch/arm/dts/sun50i-a64-sopine.dtsi          |  15 +
 arch/arm/dts/sun50i-a64.dtsi                 | 313
+++++++++++++++++--
 arch/arm/include/asm/arch-sunxi/gpio.h       |   1 +
 arch/arm/include/asm/arch-sunxi/mmc.h        |   6 +-
 arch/arm/mach-sunxi/Kconfig                  |   1 +
 board/sunxi/board.c                          |   6 +
 configs/pinebook_defconfig                   |  22 ++
 drivers/mmc/sunxi_mmc.c                      |  21 +-
 drivers/video/bridge/video-bridge-uclass.c   |  16 +-
 19 files changed, 1296 insertions(+), 52 deletions(-)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
Quoted 2 lines

--
2.19.1

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot

#12 lore raw

v4 cover Add support for Pinebook

Quoted 7 lines · Vasily Khoruzhick
Quoted 4 lines · Vasily Khoruzhick

Video is supposed to work, but you need ATF from Andre to enable LCD power:

https://github.com/apritzel/arm-trusted-firmware/

You need "allwinner" branch from this repo.

I deliberately switched the standard branch away, since everything is merged in mainline ATF now (including PMIC support). I will post U-Boot patches to change the instructions soon, but just use the master branch from the official repo (and report back any issues!):
https://github.com/ARM-Software/arm-trusted-firmware.git

You might need the latest DT in U-Boot (patches are queued, AFAIK) to let ATF know about your PMIC requirements.

Cheers,
Andre

Quoted 110 lines
Quoted 110 lines · Dennis Gilmore
Quoted 109 lines

I have tested the series on my pinebook on top of git commit 99431c1c21685fe63d46b6eac995b78ce9adce0a

I am not sure if video is expected to work or not, in my case it does not work.

U-Boot SPL 2018.11-rc3-00027-g77a46c3a3c (Nov 03 2018 - 13:42:47 -0500)
DRAM: 2048 MiB
Trying to boot from MMC1

NOTICE:  BL31: v1.6(release):
NOTICE:  BL31: Built : 09:10:17, Sep 23 2018
NOTICE:  BL31: Detected Allwinner A64/H64/R18 SoC (1689)
NOTICE:  BL31: STUB PMIC setup code called

U-Boot 2018.11-rc3-00027-g77a46c3a3c (Nov 03 2018 - 13:42:47 -0500) Allwinner Technology

CPU:   Allwinner A64 (SUN50I)
Model: Pinebook
DRAM:  2 GiB
MMC:   SUNXI SD/MMC: 0, SUNXI SD/MMC: 1

Loading Environment from FAT... *** Warning - bad CRC, using default environment

Warning: HDMI PHY init timeout!
Warning: HDMI PHY init timeout!
In:    serial
Out:   serial
Err:   serial

u-boot however works fine and the system is able to boot and the correct dtb is loaded.

El mar, 30-10-2018 a las 14:36 -0700, Vagrant Cascadian escribió:

Quoted 70 lines

Tested series applied to u-boot 2018.11-rc3 on pinebook, both with reboot and cold boot.

Thanks for all the work on it!

Quoted 55 lines · Vasily Khoruzhick

This series adds support for the Pinebook, an allwinner A64 laptop produced by Pine64. It also syncs sun50i-a64.dtsi with linux, adds support for mmc delay calibration, R_I2C controller, and addresses the issue with activating video bridge when any of GPIOs is missing.

v2: - sync sun50i-a64.dtsi with linux instead of adding missing nodes
- take sun50i-a64-pinebook.dts from linux
- don't introduce new Kconfig for A64 MMC calibration
- improve code in video bridge uclass to check for presensce of GPIO instead of ingoring EINVAL errors
v3: - enable calibration for H6 as well
- init ret variable in video_bridge_set_active()
- fix order of dts files Makefile
- split anx6345 binding into sun50i-a64-pinebook-u-boot.dts
- drop speaker_amp node from pinebook dts
- drop unnecessary options from defconfig
v4: - sync device tree files with linux-next

Vasily Khoruzhick (5):
mmc: sunxi: add support for automatic delay calibration
dm: video: bridge: don't fail to activate bridge if reset or
sleep
GPIO is missing
sunxi: DT: A64: update device tree files for Allwinner A64 SoC
sun50i: A64: add support for R_I2C controller
sunxi: DT: add support for Pinebook

 arch/arm/dts/Makefile                        |   1 +
 arch/arm/dts/sun50i-a64-amarula-relic.dts    | 168 +++++++++-
 arch/arm/dts/sun50i-a64-bananapi-m64.dts     |  34 +-
 arch/arm/dts/sun50i-a64-nanopi-a64.dts       |  89 +++++-
 arch/arm/dts/sun50i-a64-olinuxino.dts        | 103 +++++-
 arch/arm/dts/sun50i-a64-orangepi-win.dts     | 179 ++++++++++-
 arch/arm/dts/sun50i-a64-pine64.dts           |  32 +-
 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi |  15 +
 arch/arm/dts/sun50i-a64-pinebook.dts         | 294
+++++++++++++++++
 arch/arm/dts/sun50i-a64-sopine-baseboard.dts |  32 +-
 arch/arm/dts/sun50i-a64-sopine.dtsi          |  15 +
 arch/arm/dts/sun50i-a64.dtsi                 | 313
+++++++++++++++++--
 arch/arm/include/asm/arch-sunxi/gpio.h       |   1 +
 arch/arm/include/asm/arch-sunxi/mmc.h        |   6 +-
 arch/arm/mach-sunxi/Kconfig                  |   1 +
 board/sunxi/board.c                          |   6 +
 configs/pinebook_defconfig                   |  22 ++
 drivers/mmc/sunxi_mmc.c                      |  21 +-
 drivers/video/bridge/video-bridge-uclass.c   |  16 +-
 19 files changed, 1296 insertions(+), 52 deletions(-)
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
 create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
 create mode 100644 configs/pinebook_defconfig
Quoted 2 lines

--
2.19.1

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot

#13 lore raw

v4 cover Add support for Pinebook

Quoted 5 lines · André Przywara
Quoted 2 lines · Vasily Khoruzhick

You need "allwinner" branch from this repo.

Quoted 8 lines

I deliberately switched the standard branch away, since everything is merged in mainline ATF now (including PMIC support). I will post U-Boot patches to change the instructions soon, but just use the master branch from the official repo (and report back any issues!):
https://github.com/ARM-Software/arm-trusted-firmware.git

You might need the latest DT in U-Boot (patches are queued, AFAIK) to let ATF know about your PMIC requirements.

Thanks, I just tested it - and my patches work fine with ATF from official repo.

Quoted 3 lines

Cheers,
Andre

#14 lore raw

v4 cover Add support for Pinebook

Quoted 14 lines · Vasily Khoruzhick

On Sat, Nov 3, 2018 at 2:15 PM André Przywara <[email protected]

Quoted 13 lines

wrote:

Quoted 1 line · Vasily Khoruzhick

You need "allwinner" branch from this repo.

I deliberately switched the standard branch away, since everything is
merged in mainline ATF now (including PMIC support). I will post U- Boot
patches to change the instructions soon, but just use the master branch
from the official repo (and report back any issues!):
https://github.com/ARM-Software/arm-trusted-firmware.git

Quoted 6 lines
Quoted 3 lines

You might need the latest DT in U-Boot (patches are queued, AFAIK) to
let ATF know about your PMIC requirements.

Thanks, I just tested it - and my patches work fine with ATF from official repo.

I have just tested with ATF from the official repo and it all works.

Thanks

Dennis