mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-07-25 12:29:44 +09:00
- Orange Pi Zero Plus 2 support - sunxi psci, prcm fixes
This commit is contained in:
commit
831f06fe9a
@ -75,7 +75,7 @@ static void __secure __mdelay(u32 ms)
|
|||||||
isb();
|
isb();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __secure clamp_release(u32 __maybe_unused *clamp)
|
static void __secure clamp_release(void __maybe_unused *clamp)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
||||||
defined(CONFIG_MACH_SUN8I_H3) || \
|
defined(CONFIG_MACH_SUN8I_H3) || \
|
||||||
@ -90,7 +90,7 @@ static void __secure clamp_release(u32 __maybe_unused *clamp)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __secure clamp_set(u32 __maybe_unused *clamp)
|
static void __secure clamp_set(void __maybe_unused *clamp)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
||||||
defined(CONFIG_MACH_SUN8I_H3) || \
|
defined(CONFIG_MACH_SUN8I_H3) || \
|
||||||
@ -99,22 +99,28 @@ static void __secure clamp_set(u32 __maybe_unused *clamp)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __secure sunxi_power_switch(u32 *clamp, u32 *pwroff, bool on,
|
static void __secure sunxi_power_switch(void *clamp, void *pwroff_ptr, bool on,
|
||||||
int cpu)
|
int cpu)
|
||||||
{
|
{
|
||||||
|
u32 pwroff;
|
||||||
|
|
||||||
|
memcpy(&pwroff, pwroff_ptr, sizeof(u32));
|
||||||
|
|
||||||
if (on) {
|
if (on) {
|
||||||
/* Release power clamp */
|
/* Release power clamp */
|
||||||
clamp_release(clamp);
|
clamp_release(clamp);
|
||||||
|
|
||||||
/* Clear power gating */
|
/* Clear power gating */
|
||||||
clrbits_le32(pwroff, BIT(cpu));
|
clrbits_le32(&pwroff, BIT(cpu));
|
||||||
} else {
|
} else {
|
||||||
/* Set power gating */
|
/* Set power gating */
|
||||||
setbits_le32(pwroff, BIT(cpu));
|
setbits_le32(&pwroff, BIT(cpu));
|
||||||
|
|
||||||
/* Activate power clamp */
|
/* Activate power clamp */
|
||||||
clamp_set(clamp);
|
clamp_set(clamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memcpy(pwroff_ptr, &pwroff, sizeof(u32));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_MACH_SUN8I_R40
|
#ifdef CONFIG_MACH_SUN8I_R40
|
||||||
|
@ -522,7 +522,8 @@ dtb-$(CONFIG_MACH_SUN8I_H3) += \
|
|||||||
sun8i-h3-orangepi-pc.dtb \
|
sun8i-h3-orangepi-pc.dtb \
|
||||||
sun8i-h3-orangepi-pc-plus.dtb \
|
sun8i-h3-orangepi-pc-plus.dtb \
|
||||||
sun8i-h3-orangepi-plus.dtb \
|
sun8i-h3-orangepi-plus.dtb \
|
||||||
sun8i-h3-orangepi-plus2e.dtb
|
sun8i-h3-orangepi-plus2e.dtb \
|
||||||
|
sun8i-h3-orangepi-zero-plus2.dtb
|
||||||
dtb-$(CONFIG_MACH_SUN8I_R40) += \
|
dtb-$(CONFIG_MACH_SUN8I_R40) += \
|
||||||
sun8i-r40-bananapi-m2-ultra.dtb \
|
sun8i-r40-bananapi-m2-ultra.dtb \
|
||||||
sun8i-v40-bananapi-m2-berry.dtb
|
sun8i-v40-bananapi-m2-berry.dtb
|
||||||
|
139
arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts
Normal file
139
arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
|
||||||
|
* Copyright (C) 2018 Diego Rondini <diego.rondini@kynetics.com>
|
||||||
|
*
|
||||||
|
* This file is dual-licensed: you can use it either under the terms
|
||||||
|
* of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
* licensing only applies to this file, and not this project as a
|
||||||
|
* whole.
|
||||||
|
*
|
||||||
|
* a) This file is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* Or, alternatively,
|
||||||
|
*
|
||||||
|
* b) Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without
|
||||||
|
* restriction, including without limitation the rights to use,
|
||||||
|
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following
|
||||||
|
* conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include "sun8i-h3.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "OrangePi Zero Plus2 H3";
|
||||||
|
compatible = "xunlong,orangepi-zero-plus2-h3", "allwinner,sun8i-h3";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uart0;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
|
connector {
|
||||||
|
compatible = "hdmi-connector";
|
||||||
|
type = "a";
|
||||||
|
|
||||||
|
port {
|
||||||
|
hdmi_con_in: endpoint {
|
||||||
|
remote-endpoint = <&hdmi_out_con>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
reg_vcc3v3: vcc3v3 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc3v3";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wifi_pwrseq: wifi_pwrseq {
|
||||||
|
compatible = "mmc-pwrseq-simple";
|
||||||
|
reset-gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
|
||||||
|
post-power-on-delay-ms = <200>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&de {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&hdmi {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&hdmi_out {
|
||||||
|
hdmi_out_con: endpoint {
|
||||||
|
remote-endpoint = <&hdmi_con_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc0 {
|
||||||
|
vmmc-supply = <®_vcc3v3>;
|
||||||
|
bus-width = <4>;
|
||||||
|
cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
vmmc-supply = <®_vcc3v3>;
|
||||||
|
vqmmc-supply = <®_vcc3v3>;
|
||||||
|
mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
bus-width = <4>;
|
||||||
|
non-removable;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
brcmf: wifi@1 {
|
||||||
|
reg = <1>;
|
||||||
|
compatible = "brcm,bcm4329-fmac";
|
||||||
|
interrupt-parent = <&r_pio>;
|
||||||
|
interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 */
|
||||||
|
interrupt-names = "host-wake";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&mmc2_8bit_pins>;
|
||||||
|
vmmc-supply = <®_vcc3v3>;
|
||||||
|
bus-width = <8>;
|
||||||
|
non-removable;
|
||||||
|
cap-mmc-hw-reset;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart0_pins_a>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
@ -202,7 +202,7 @@
|
|||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
|
||||||
struct __packed sunxi_prcm_reg {
|
struct sunxi_prcm_reg {
|
||||||
u32 cpus_cfg; /* 0x000 */
|
u32 cpus_cfg; /* 0x000 */
|
||||||
u8 res0[0x8]; /* 0x004 */
|
u8 res0[0x8]; /* 0x004 */
|
||||||
u32 apb0_ratio; /* 0x00c */
|
u32 apb0_ratio; /* 0x00c */
|
||||||
|
@ -405,6 +405,11 @@ M: Jagan Teki <jagan@amarulasolutions.com>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: configs/orangepi_zero_plus2_defconfig
|
F: configs/orangepi_zero_plus2_defconfig
|
||||||
|
|
||||||
|
ORANGEPI ZERO PLUS 2 H3 BOARD
|
||||||
|
M: Diego Rondini <diego.rondini@kynetics.com>
|
||||||
|
S: Maintained
|
||||||
|
F: configs/orangepi_zero_plus2_h3_defconfig
|
||||||
|
|
||||||
ORANGEPI PC 2 BOARD
|
ORANGEPI PC 2 BOARD
|
||||||
M: Andre Przywara <andre.przywara@arm.com>
|
M: Andre Przywara <andre.przywara@arm.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
19
configs/orangepi_zero_plus2_h3_defconfig
Normal file
19
configs/orangepi_zero_plus2_h3_defconfig
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARCH_SUNXI=y
|
||||||
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
|
CONFIG_SPL=y
|
||||||
|
CONFIG_MACH_SUN8I_H3=y
|
||||||
|
CONFIG_DRAM_CLK=672
|
||||||
|
# CONFIG_DRAM_ODT_EN is not set
|
||||||
|
CONFIG_MMC0_CD_PIN="PH13"
|
||||||
|
CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
||||||
|
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||||
|
CONFIG_USE_PREBOOT=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="sun8i-h3-orangepi-zero-plus2"
|
||||||
|
CONFIG_SUN8I_EMAC=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
CONFIG_USB_OHCI_HCD=y
|
||||||
|
CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
Loading…
Reference in New Issue
Block a user