mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-17 02:15:02 +00:00
Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-sunxi
The main attraction are two regressions, plus a fix for a long standing bug: - Fix USB support on boards with a switched VBUS regulator. - Fix failing boot due to env loading on boards without MMC (CHIP). - Fix PSCI CPU_OFF operation on R40 boards. The rest are smaller fixes, and the forgotten DT sync for sun4i boards.
This commit is contained in:
commit
bfa9306e14
24 changed files with 525 additions and 283 deletions
|
@ -153,7 +153,7 @@ static void __secure sunxi_cpu_set_power(int cpu, bool on)
|
|||
|
||||
sunxi_power_switch((void *)cpucfg + SUN8I_R40_PWR_CLAMP(cpu),
|
||||
(void *)cpucfg + SUN8I_R40_PWROFF,
|
||||
on, 0);
|
||||
on, cpu);
|
||||
}
|
||||
#else /* ! CONFIG_MACH_SUN7I && ! CONFIG_MACH_SUN8I_R40 */
|
||||
static void __secure sunxi_cpu_set_power(int cpu, bool on)
|
||||
|
|
|
@ -539,7 +539,8 @@ dtb-$(CONFIG_MACH_SUN4I) += \
|
|||
sun4i-a10-olinuxino-lime.dtb \
|
||||
sun4i-a10-pcduino.dtb \
|
||||
sun4i-a10-pcduino2.dtb \
|
||||
sun4i-a10-pov-protab2-ips9.dtb
|
||||
sun4i-a10-pov-protab2-ips9.dtb \
|
||||
sun4i-a10-topwise-a721.dtb
|
||||
dtb-$(CONFIG_MACH_SUN5I) += \
|
||||
sun5i-a10s-auxtek-t003.dtb \
|
||||
sun5i-a10s-auxtek-t004.dtb \
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
ac_power_supply: ac-power-supply {
|
||||
ac_power_supply: ac-power {
|
||||
compatible = "x-powers,axp202-ac-power-supply";
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -69,7 +69,7 @@
|
|||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
battery_power_supply: battery-power-supply {
|
||||
battery_power_supply: battery-power {
|
||||
compatible = "x-powers,axp209-battery-power-supply";
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -112,7 +112,7 @@
|
|||
};
|
||||
};
|
||||
|
||||
usb_power_supply: usb-power-supply {
|
||||
usb_power_supply: usb-power {
|
||||
compatible = "x-powers,axp202-usb-power-supply";
|
||||
status = "disabled";
|
||||
};
|
||||
|
|
|
@ -60,15 +60,26 @@
|
|||
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";
|
||||
|
||||
red {
|
||||
led-0 {
|
||||
label = "a1000:red:usr";
|
||||
gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
blue {
|
||||
led-1 {
|
||||
label = "a1000:blue:pwr";
|
||||
gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "on";
|
||||
|
@ -125,7 +136,7 @@
|
|||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy1>;
|
||||
phy-handle = <&phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -133,6 +144,20 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&de {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi_out {
|
||||
hdmi_out_con: endpoint {
|
||||
remote-endpoint = <&hdmi_con_in>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy1>;
|
||||
phy-handle = <&phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -131,20 +131,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
usb0_vbus_detect_pin: usb0-vbus-detect-pin {
|
||||
pins = "PH5";
|
||||
function = "gpio_in";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
®_usb0_vbus {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -165,10 +151,8 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
|
||||
usb0_vbus-supply = <®_usb0_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
status = "okay";
|
||||
|
|
|
@ -75,12 +75,12 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&led_pins_cubieboard>;
|
||||
|
||||
blue {
|
||||
led-0 {
|
||||
label = "cubieboard:blue:usr";
|
||||
gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>; /* LED1 */
|
||||
};
|
||||
|
||||
green {
|
||||
led-1 {
|
||||
label = "cubieboard:green:usr";
|
||||
gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>; /* LED2 */
|
||||
linux,default-trigger = "heartbeat";
|
||||
|
@ -114,7 +114,7 @@
|
|||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy1>;
|
||||
phy-handle = <&phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -184,12 +184,6 @@
|
|||
function = "gpio_out";
|
||||
drive-strength = <20>;
|
||||
};
|
||||
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
®_ahci_5v {
|
||||
|
@ -254,9 +248,7 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb1_vbus-supply = <®_usb1_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
status = "okay";
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
|
||||
default-brightness-level = <8>;
|
||||
enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
|
||||
power-supply = <®_vcc3v3>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
@ -158,20 +159,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
usb0_vbus_detect_pin: usb0-vbus-detect-pin {
|
||||
pins = "PH5";
|
||||
function = "gpio_in";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
&pwm {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm0_pin>;
|
||||
|
@ -223,10 +210,8 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
|
||||
usb0_vbus-supply = <®_usb0_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
status = "okay";
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy0>;
|
||||
phy-handle = <&phy0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -86,20 +86,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
usb0_vbus_detect_pin: usb0-vbus-detect-pin {
|
||||
pins = "PH5";
|
||||
function = "gpio_in";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
®_usb0_vbus {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -121,10 +107,8 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
|
||||
usb0_vbus-supply = <®_usb0_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
status = "okay";
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
|
||||
default-brightness-level = <8>;
|
||||
enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
|
||||
power-supply = <®_vcc3v3>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
@ -164,20 +165,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
usb0_vbus_detect_pin: usb0-vbus-detect-pin {
|
||||
pins = "PH5";
|
||||
function = "gpio_in";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
&pwm {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm0_pin>;
|
||||
|
@ -233,10 +220,8 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
|
||||
usb0_vbus-supply = <®_usb0_vbus>;
|
||||
usb1_vbus-supply = <®_usb1_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
|
|
|
@ -61,10 +61,6 @@
|
|||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys-polled";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&key_pins_inet9f>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
poll-interval = <20>;
|
||||
|
||||
left-joystick-left {
|
||||
|
@ -72,7 +68,7 @@
|
|||
linux,code = <ABS_X>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <0xffffffff>; /* -1 */
|
||||
gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */
|
||||
gpios = <&pio 0 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA6 */
|
||||
};
|
||||
|
||||
left-joystick-right {
|
||||
|
@ -80,7 +76,7 @@
|
|||
linux,code = <ABS_X>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <1>;
|
||||
gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */
|
||||
gpios = <&pio 0 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA5 */
|
||||
};
|
||||
|
||||
left-joystick-up {
|
||||
|
@ -88,7 +84,7 @@
|
|||
linux,code = <ABS_Y>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <0xffffffff>; /* -1 */
|
||||
gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */
|
||||
gpios = <&pio 0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA8 */
|
||||
};
|
||||
|
||||
left-joystick-down {
|
||||
|
@ -96,7 +92,7 @@
|
|||
linux,code = <ABS_Y>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <1>;
|
||||
gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
|
||||
gpios = <&pio 0 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA9 */
|
||||
};
|
||||
|
||||
right-joystick-left {
|
||||
|
@ -104,7 +100,7 @@
|
|||
linux,code = <ABS_Z>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <0xffffffff>; /* -1 */
|
||||
gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */
|
||||
gpios = <&pio 0 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA1 */
|
||||
};
|
||||
|
||||
right-joystick-right {
|
||||
|
@ -112,7 +108,7 @@
|
|||
linux,code = <ABS_Z>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <1>;
|
||||
gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */
|
||||
gpios = <&pio 0 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA0 */
|
||||
};
|
||||
|
||||
right-joystick-up {
|
||||
|
@ -120,7 +116,7 @@
|
|||
linux,code = <ABS_RZ>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <0xffffffff>; /* -1 */
|
||||
gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */
|
||||
gpios = <&pio 0 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA3 */
|
||||
};
|
||||
|
||||
right-joystick-down {
|
||||
|
@ -128,7 +124,7 @@
|
|||
linux,code = <ABS_RZ>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <1>;
|
||||
gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */
|
||||
gpios = <&pio 0 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA4 */
|
||||
};
|
||||
|
||||
dpad-left {
|
||||
|
@ -136,7 +132,7 @@
|
|||
linux,code = <ABS_HAT0X>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <0xffffffff>; /* -1 */
|
||||
gpios = <&pio 7 23 GPIO_ACTIVE_LOW>; /* PH23 */
|
||||
gpios = <&pio 7 23 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH23 */
|
||||
};
|
||||
|
||||
dpad-right {
|
||||
|
@ -144,7 +140,7 @@
|
|||
linux,code = <ABS_HAT0X>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <1>;
|
||||
gpios = <&pio 7 24 GPIO_ACTIVE_LOW>; /* PH24 */
|
||||
gpios = <&pio 7 24 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH24 */
|
||||
};
|
||||
|
||||
dpad-up {
|
||||
|
@ -152,7 +148,7 @@
|
|||
linux,code = <ABS_HAT0Y>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <0xffffffff>; /* -1 */
|
||||
gpios = <&pio 7 25 GPIO_ACTIVE_LOW>; /* PH25 */
|
||||
gpios = <&pio 7 25 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH25 */
|
||||
};
|
||||
|
||||
dpad-down {
|
||||
|
@ -160,55 +156,55 @@
|
|||
linux,code = <ABS_HAT0Y>;
|
||||
linux,input-type = <EV_ABS>;
|
||||
linux,input-value = <1>;
|
||||
gpios = <&pio 7 26 GPIO_ACTIVE_LOW>; /* PH26 */
|
||||
gpios = <&pio 7 26 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH26 */
|
||||
};
|
||||
|
||||
x {
|
||||
label = "Button X";
|
||||
linux,code = <BTN_X>;
|
||||
gpios = <&pio 0 16 GPIO_ACTIVE_LOW>; /* PA16 */
|
||||
gpios = <&pio 0 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA16 */
|
||||
};
|
||||
|
||||
y {
|
||||
label = "Button Y";
|
||||
linux,code = <BTN_Y>;
|
||||
gpios = <&pio 0 14 GPIO_ACTIVE_LOW>; /* PA14 */
|
||||
gpios = <&pio 0 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA14 */
|
||||
};
|
||||
|
||||
a {
|
||||
label = "Button A";
|
||||
linux,code = <BTN_A>;
|
||||
gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */
|
||||
gpios = <&pio 0 17 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA17 */
|
||||
};
|
||||
|
||||
b {
|
||||
label = "Button B";
|
||||
linux,code = <BTN_B>;
|
||||
gpios = <&pio 0 15 GPIO_ACTIVE_LOW>; /* PA15 */
|
||||
gpios = <&pio 0 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA15 */
|
||||
};
|
||||
|
||||
select {
|
||||
label = "Select Button";
|
||||
linux,code = <BTN_SELECT>;
|
||||
gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */
|
||||
gpios = <&pio 0 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA11 */
|
||||
};
|
||||
|
||||
start {
|
||||
label = "Start Button";
|
||||
linux,code = <BTN_START>;
|
||||
gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */
|
||||
gpios = <&pio 0 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA12 */
|
||||
};
|
||||
|
||||
top-left {
|
||||
label = "Top Left Button";
|
||||
linux,code = <BTN_TL>;
|
||||
gpios = <&pio 7 22 GPIO_ACTIVE_LOW>; /* PH22 */
|
||||
gpios = <&pio 7 22 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH22 */
|
||||
};
|
||||
|
||||
top-right {
|
||||
label = "Top Right Button";
|
||||
linux,code = <BTN_TR>;
|
||||
gpios = <&pio 0 13 GPIO_ACTIVE_LOW>; /* PA13 */
|
||||
gpios = <&pio 0 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA13 */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -308,30 +304,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
key_pins_inet9f: key-pins {
|
||||
pins = "PA0", "PA1", "PA3", "PA4",
|
||||
"PA5", "PA6", "PA8", "PA9",
|
||||
"PA11", "PA12", "PA13",
|
||||
"PA14", "PA15", "PA16", "PA17",
|
||||
"PH22", "PH23", "PH24", "PH25", "PH26";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
usb0_vbus_detect_pin: usb0-vbus-detect-pin {
|
||||
pins = "PH5";
|
||||
function = "gpio_in";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
®_dcdc2 {
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <1000000>;
|
||||
|
@ -377,10 +349,8 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
|
||||
usb0_vbus-supply = <®_usb0_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
status = "okay";
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
&emac {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emac_pins>;
|
||||
phy = <&phy1>;
|
||||
phy-handle = <&phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
green {
|
||||
led {
|
||||
label = "q5:green:usr";
|
||||
gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>; /* PH20 */
|
||||
};
|
||||
|
@ -94,7 +94,7 @@
|
|||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy1>;
|
||||
phy-handle = <&phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -62,22 +62,22 @@
|
|||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
red1 {
|
||||
led-0 {
|
||||
label = "marsboard:red1:usr";
|
||||
gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
red2 {
|
||||
led-1 {
|
||||
label = "marsboard:red2:usr";
|
||||
gpios = <&pio 1 6 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
red3 {
|
||||
led-2 {
|
||||
label = "marsboard:red3:usr";
|
||||
gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
red4 {
|
||||
led-3 {
|
||||
label = "marsboard:red4:usr";
|
||||
gpios = <&pio 1 8 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
@ -105,7 +105,7 @@
|
|||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy1>;
|
||||
phy-handle = <&phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -148,14 +148,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
®_usb1_vbus {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -183,9 +175,7 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb1_vbus-supply = <®_usb1_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
status = "okay";
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&led_pins_olinuxinolime>;
|
||||
|
||||
green {
|
||||
led {
|
||||
label = "a10-olinuxino-lime:green:usr";
|
||||
gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "on";
|
||||
|
@ -91,12 +91,11 @@
|
|||
/*
|
||||
* The A10-Lime is known to be unstable when running at 1008 MHz
|
||||
*/
|
||||
operating-points = <
|
||||
/* kHz uV */
|
||||
912000 1350000
|
||||
864000 1300000
|
||||
624000 1250000
|
||||
>;
|
||||
operating-points =
|
||||
/* kHz uV */
|
||||
<912000 1350000>,
|
||||
<864000 1300000>,
|
||||
<624000 1250000>;
|
||||
};
|
||||
|
||||
&de {
|
||||
|
@ -112,7 +111,7 @@
|
|||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy1>;
|
||||
phy-handle = <&phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -186,18 +185,6 @@
|
|||
function = "gpio_out";
|
||||
drive-strength = <20>;
|
||||
};
|
||||
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
usb0_vbus_detect_pin: usb0-vbus-detect-pin {
|
||||
pins = "PH5";
|
||||
function = "gpio_in";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
®_ahci_5v {
|
||||
|
@ -229,10 +216,8 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH5 */
|
||||
usb0_vbus-supply = <®_usb0_vbus>;
|
||||
usb1_vbus-supply = <®_usb1_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
|
|
|
@ -63,12 +63,12 @@
|
|||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
tx {
|
||||
led-0 {
|
||||
label = "pcduino:green:tx";
|
||||
gpios = <&pio 7 15 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
rx {
|
||||
led-1 {
|
||||
label = "pcduino:green:rx";
|
||||
gpios = <&pio 7 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
@ -76,8 +76,6 @@
|
|||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
back {
|
||||
label = "Key Back";
|
||||
|
@ -112,7 +110,7 @@
|
|||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy1>;
|
||||
phy-handle = <&phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -156,14 +154,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
#include "axp209.dtsi"
|
||||
|
||||
®_dcdc2 {
|
||||
|
@ -203,9 +193,7 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb1_vbus-supply = <®_vcc5v0>; /* USB1 VBUS is always on */
|
||||
usb2_vbus-supply = <®_vcc5v0>; /* USB2 VBUS is always on */
|
||||
status = "okay";
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
|
||||
default-brightness-level = <8>;
|
||||
enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
|
||||
power-supply = <®_vcc3v3>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
@ -146,20 +147,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
usb0_id_detect_pin: usb0-id-detect-pin {
|
||||
pins = "PH4";
|
||||
function = "gpio_in";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
usb0_vbus_detect_pin: usb0-vbus-detect-pin {
|
||||
pins = "PH5";
|
||||
function = "gpio_in";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
&pwm {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm0_pin>;
|
||||
|
@ -211,10 +198,8 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
|
||||
usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||
usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
|
||||
usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
|
||||
usb0_vbus-supply = <®_usb0_vbus>;
|
||||
usb1_vbus-supply = <®_usb1_vbus>;
|
||||
status = "okay";
|
||||
|
|
242
arch/arm/dts/sun4i-a10-topwise-a721.dts
Normal file
242
arch/arm/dts/sun4i-a10-topwise-a721.dts
Normal file
|
@ -0,0 +1,242 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright 2020 Pascal Roeleven <dev@pascalroeleven.nl>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "sun4i-a10.dtsi"
|
||||
#include "sunxi-common-regulators.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/pwm/pwm.h>
|
||||
|
||||
/ {
|
||||
model = "Topwise A721";
|
||||
compatible = "topwise,a721", "allwinner,sun4i-a10";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&pwm 0 100000 PWM_POLARITY_INVERTED>;
|
||||
power-supply = <®_vbat>;
|
||||
enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
|
||||
brightness-levels = <0 30 40 50 60 70 80 90 100>;
|
||||
default-brightness-level = <8>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
panel {
|
||||
compatible = "starry,kr070pe2t";
|
||||
backlight = <&backlight>;
|
||||
power-supply = <®_lcd_power>;
|
||||
|
||||
port {
|
||||
panel_input: endpoint {
|
||||
remote-endpoint = <&tcon0_out_panel>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
reg_lcd_power: reg-lcd-power {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "reg-lcd-power";
|
||||
gpio = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_vbat: reg-vbat {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vbat";
|
||||
regulator-min-microvolt = <3700000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&codec {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu-supply = <®_dcdc2>;
|
||||
};
|
||||
|
||||
&de {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ehci0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ehci1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
axp209: pmic@34 {
|
||||
reg = <0x34>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
#include "axp209.dtsi"
|
||||
|
||||
&ac_power_supply {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&battery_power_supply {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
accelerometer@4c {
|
||||
compatible = "fsl,mma7660";
|
||||
reg = <0x4c>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
|
||||
touchscreen@38 {
|
||||
compatible = "edt,edt-ft5406";
|
||||
reg = <0x38>;
|
||||
interrupt-parent = <&pio>;
|
||||
interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>;
|
||||
touchscreen-size-x = <800>;
|
||||
touchscreen-size-y = <480>;
|
||||
vcc-supply = <®_vcc3v3>;
|
||||
};
|
||||
};
|
||||
|
||||
&lradc {
|
||||
vref-supply = <®_ldo2>;
|
||||
status = "okay";
|
||||
|
||||
button-571 {
|
||||
label = "Volume Up";
|
||||
linux,code = <KEY_VOLUMEUP>;
|
||||
channel = <0>;
|
||||
voltage = <571428>;
|
||||
};
|
||||
|
||||
button-761 {
|
||||
label = "Volume Down";
|
||||
linux,code = <KEY_VOLUMEDOWN>;
|
||||
channel = <0>;
|
||||
voltage = <761904>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
vmmc-supply = <®_vcc3v3>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&pio 7 1 GPIO_ACTIVE_LOW>; /* PH01 */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ohci0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ohci1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&otg_sram {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
vcc-pb-supply = <®_vcc3v3>;
|
||||
vcc-pf-supply = <®_vcc3v3>;
|
||||
vcc-ph-supply = <®_vcc3v3>;
|
||||
};
|
||||
|
||||
&pwm {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm0_pin>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
®_dcdc2 {
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-name = "vdd-cpu";
|
||||
};
|
||||
|
||||
®_dcdc3 {
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <1250000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-name = "vdd-int-dll";
|
||||
};
|
||||
|
||||
®_ldo1 {
|
||||
regulator-name = "vdd-rtc";
|
||||
};
|
||||
|
||||
®_ldo2 {
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-name = "avcc";
|
||||
};
|
||||
|
||||
®_usb0_vbus {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
®_usb1_vbus {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
®_usb2_vbus {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tcon0_out {
|
||||
tcon0_out_panel: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&panel_input>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pb_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_otg {
|
||||
dr_mode = "otg";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_power_supply {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphy {
|
||||
usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
|
||||
usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||
usb0_vbus-supply = <®_usb0_vbus>;
|
||||
usb1_vbus-supply = <®_usb1_vbus>;
|
||||
usb2_vbus-supply = <®_usb2_vbus>;
|
||||
status = "okay";
|
||||
};
|
|
@ -115,13 +115,12 @@
|
|||
reg = <0x0>;
|
||||
clocks = <&ccu CLK_CPU>;
|
||||
clock-latency = <244144>; /* 8 32k periods */
|
||||
operating-points = <
|
||||
operating-points =
|
||||
/* kHz uV */
|
||||
1008000 1400000
|
||||
912000 1350000
|
||||
864000 1300000
|
||||
624000 1250000
|
||||
>;
|
||||
<1008000 1400000>,
|
||||
<912000 1350000>,
|
||||
<864000 1300000>,
|
||||
<624000 1250000>;
|
||||
#cooling-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
@ -143,7 +142,7 @@
|
|||
trips {
|
||||
cpu_alert0: cpu-alert0 {
|
||||
/* milliCelsius */
|
||||
temperature = <850000>;
|
||||
temperature = <85000>;
|
||||
hysteresis = <2000>;
|
||||
type = "passive";
|
||||
};
|
||||
|
@ -184,14 +183,34 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "arm,cortex-a8-pmu";
|
||||
interrupts = <3>;
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
/* Address must be kept in the lower 256 MiBs of DRAM for VE. */
|
||||
default-pool {
|
||||
compatible = "shared-dma-pool";
|
||||
size = <0x6000000>;
|
||||
alloc-ranges = <0x40000000 0x10000000>;
|
||||
reusable;
|
||||
linux,cma-default;
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
sram-controller@1c00000 {
|
||||
compatible = "allwinner,sun4i-a10-sram-controller";
|
||||
system-control@1c00000 {
|
||||
compatible = "allwinner,sun4i-a10-system-control";
|
||||
reg = <0x01c00000 0x30>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
@ -224,6 +243,19 @@
|
|||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
sram_c: sram@1d00000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x01d00000 0xd0000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x01d00000 0xd0000>;
|
||||
|
||||
ve_sram: sram-section@0 {
|
||||
compatible = "allwinner,sun4i-a10-sram-c1";
|
||||
reg = <0x000000 0x80000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dma: dma-controller@1c02000 {
|
||||
|
@ -234,7 +266,7 @@
|
|||
#dma-cells = <2>;
|
||||
};
|
||||
|
||||
nfc: nand@1c03000 {
|
||||
nfc: nand-controller@1c03000 {
|
||||
compatible = "allwinner,sun4i-a10-nand";
|
||||
reg = <0x01c03000 0x1000>;
|
||||
interrupts = <37>;
|
||||
|
@ -309,6 +341,7 @@
|
|||
"tcon-ch0",
|
||||
"tcon-ch1";
|
||||
clock-output-names = "tcon0-pixel-clock";
|
||||
#clock-cells = <0>;
|
||||
dmas = <&dma SUN4I_DMA_DEDICATED 14>;
|
||||
|
||||
ports {
|
||||
|
@ -358,6 +391,7 @@
|
|||
"tcon-ch0",
|
||||
"tcon-ch1";
|
||||
clock-output-names = "tcon1-pixel-clock";
|
||||
#clock-cells = <0>;
|
||||
dmas = <&dma SUN4I_DMA_DEDICATED 15>;
|
||||
|
||||
ports {
|
||||
|
@ -394,6 +428,17 @@
|
|||
};
|
||||
};
|
||||
|
||||
video-codec@1c0e000 {
|
||||
compatible = "allwinner,sun4i-a10-video-engine";
|
||||
reg = <0x01c0e000 0x1000>;
|
||||
clocks = <&ccu CLK_AHB_VE>, <&ccu CLK_VE>,
|
||||
<&ccu CLK_DRAM_VE>;
|
||||
clock-names = "ahb", "mod", "ram";
|
||||
resets = <&ccu RST_VE>;
|
||||
interrupts = <53>;
|
||||
allwinner,sram = <&ve_sram 1>;
|
||||
};
|
||||
|
||||
mmc0: mmc@1c0f000 {
|
||||
compatible = "allwinner,sun4i-a10-mmc";
|
||||
reg = <0x01c0f000 0x1000>;
|
||||
|
@ -450,13 +495,14 @@
|
|||
phy-names = "usb";
|
||||
extcon = <&usbphy 0>;
|
||||
allwinner,sram = <&otg_sram 1>;
|
||||
dr_mode = "otg";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usbphy: phy@1c13400 {
|
||||
#phy-cells = <1>;
|
||||
compatible = "allwinner,sun4i-a10-usb-phy";
|
||||
reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>;
|
||||
reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>;
|
||||
reg-names = "phy_ctrl", "pmu1", "pmu2";
|
||||
clocks = <&ccu CLK_USB_PHY>;
|
||||
clock-names = "usb_phy";
|
||||
|
@ -530,8 +576,6 @@
|
|||
};
|
||||
|
||||
hdmi_out: port@1 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
@ -579,6 +623,16 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
csi1: csi@1c1d000 {
|
||||
compatible = "allwinner,sun4i-a10-csi1";
|
||||
reg = <0x01c1d000 0x1000>;
|
||||
interrupts = <43>;
|
||||
clocks = <&ccu CLK_AHB_CSI1>, <&ccu CLK_DRAM_CSI1>;
|
||||
clock-names = "bus", "ram";
|
||||
resets = <&ccu RST_CSI1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi3: spi@1c1f000 {
|
||||
compatible = "allwinner,sun4i-a10-spi";
|
||||
reg = <0x01c1f000 0x1000>;
|
||||
|
@ -625,6 +679,31 @@
|
|||
function = "can";
|
||||
};
|
||||
|
||||
/omit-if-no-ref/
|
||||
csi1_8bits_pg_pins: csi1-8bits-pg-pins {
|
||||
pins = "PG0", "PG2", "PG3", "PG4", "PG5",
|
||||
"PG6", "PG7", "PG8", "PG9", "PG10",
|
||||
"PG11";
|
||||
function = "csi1";
|
||||
};
|
||||
|
||||
/omit-if-no-ref/
|
||||
csi1_24bits_ph_pins: csi1-24bits-ph-pins {
|
||||
pins = "PH0", "PH1", "PH2", "PH3", "PH4",
|
||||
"PH5", "PH6", "PH7", "PH8", "PH9",
|
||||
"PH10", "PH11", "PH12", "PH13", "PH14",
|
||||
"PH15", "PH16", "PH17", "PH18", "PH19",
|
||||
"PH20", "PH21", "PH22", "PH23", "PH24",
|
||||
"PH25", "PH26", "PH27";
|
||||
function = "csi1";
|
||||
};
|
||||
|
||||
/omit-if-no-ref/
|
||||
csi1_clk_pg_pin: csi1-clk-pg-pin {
|
||||
pins = "PG1";
|
||||
function = "csi1";
|
||||
};
|
||||
|
||||
emac_pins: emac0-pins {
|
||||
pins = "PA0", "PA1", "PA2",
|
||||
"PA3", "PA4", "PA5", "PA6",
|
||||
|
@ -762,13 +841,20 @@
|
|||
timer@1c20c00 {
|
||||
compatible = "allwinner,sun4i-a10-timer";
|
||||
reg = <0x01c20c00 0x90>;
|
||||
interrupts = <22>;
|
||||
interrupts = <22>,
|
||||
<23>,
|
||||
<24>,
|
||||
<25>,
|
||||
<67>,
|
||||
<68>;
|
||||
clocks = <&osc24M>;
|
||||
};
|
||||
|
||||
wdt: watchdog@1c20c90 {
|
||||
compatible = "allwinner,sun4i-a10-wdt";
|
||||
reg = <0x01c20c90 0x10>;
|
||||
interrupts = <24>;
|
||||
clocks = <&osc24M>;
|
||||
};
|
||||
|
||||
rtc: rtc@1c20d00 {
|
||||
|
@ -1001,6 +1087,27 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
mali: gpu@1c40000 {
|
||||
compatible = "allwinner,sun4i-a10-mali", "arm,mali-400";
|
||||
reg = <0x01c40000 0x10000>;
|
||||
interrupts = <69>,
|
||||
<70>,
|
||||
<71>,
|
||||
<72>,
|
||||
<73>;
|
||||
interrupt-names = "gp",
|
||||
"gpmmu",
|
||||
"pp0",
|
||||
"ppmmu0",
|
||||
"pmu";
|
||||
clocks = <&ccu CLK_AHB_GPU>, <&ccu CLK_GPU>;
|
||||
clock-names = "bus", "core";
|
||||
resets = <&ccu RST_GPU>;
|
||||
|
||||
assigned-clocks = <&ccu CLK_GPU>;
|
||||
assigned-clock-rates = <384000000>;
|
||||
};
|
||||
|
||||
fe0: display-frontend@1e00000 {
|
||||
compatible = "allwinner,sun4i-a10-display-frontend";
|
||||
reg = <0x01e00000 0x20000>;
|
||||
|
|
|
@ -128,26 +128,37 @@ void i2c_init_board(void)
|
|||
* Try to use the environment from the boot source first.
|
||||
* For MMC, this means a FAT partition on the boot device (SD or eMMC).
|
||||
* If the raw MMC environment is also enabled, this is tried next.
|
||||
* When booting from NAND we try UBI first, then NAND directly.
|
||||
* SPI flash falls back to FAT (on SD card).
|
||||
*/
|
||||
enum env_location env_get_location(enum env_operation op, int prio)
|
||||
{
|
||||
enum env_location boot_loc = ENVL_FAT;
|
||||
if (prio > 1)
|
||||
return ENVL_UNKNOWN;
|
||||
|
||||
gd->env_load_prio = prio;
|
||||
/* NOWHERE is exclusive, no other option can be defined. */
|
||||
if (IS_ENABLED(CONFIG_ENV_IS_NOWHERE))
|
||||
return ENVL_NOWHERE;
|
||||
|
||||
switch (sunxi_get_boot_device()) {
|
||||
case BOOT_DEVICE_MMC1:
|
||||
case BOOT_DEVICE_MMC2:
|
||||
boot_loc = ENVL_FAT;
|
||||
if (prio == 0 && IS_ENABLED(CONFIG_ENV_IS_IN_FAT))
|
||||
return ENVL_FAT;
|
||||
if (IS_ENABLED(CONFIG_ENV_IS_IN_MMC))
|
||||
return ENVL_MMC;
|
||||
break;
|
||||
case BOOT_DEVICE_NAND:
|
||||
if (prio == 0 && IS_ENABLED(CONFIG_ENV_IS_IN_UBI))
|
||||
return ENVL_UBI;
|
||||
if (IS_ENABLED(CONFIG_ENV_IS_IN_NAND))
|
||||
boot_loc = ENVL_NAND;
|
||||
return ENVL_NAND;
|
||||
break;
|
||||
case BOOT_DEVICE_SPI:
|
||||
if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH))
|
||||
boot_loc = ENVL_SPI_FLASH;
|
||||
if (prio == 0 && IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH))
|
||||
return ENVL_SPI_FLASH;
|
||||
if (IS_ENABLED(CONFIG_ENV_IS_IN_FAT))
|
||||
return ENVL_FAT;
|
||||
break;
|
||||
case BOOT_DEVICE_BOARD:
|
||||
break;
|
||||
|
@ -155,21 +166,19 @@ enum env_location env_get_location(enum env_operation op, int prio)
|
|||
break;
|
||||
}
|
||||
|
||||
/* Always try to access the environment on the boot device first. */
|
||||
if (prio == 0)
|
||||
return boot_loc;
|
||||
|
||||
if (prio == 1) {
|
||||
switch (boot_loc) {
|
||||
case ENVL_SPI_FLASH:
|
||||
/*
|
||||
* If we come here for the first time, we *must* return a valid
|
||||
* environment location other than ENVL_UNKNOWN, or the setup sequence
|
||||
* in board_f() will silently hang. This is arguably a bug in
|
||||
* env_init(), but for now pick one environment for which we know for
|
||||
* sure to have a driver for. For all defconfigs this is either FAT
|
||||
* or UBI, or NOWHERE, which is already handled above.
|
||||
*/
|
||||
if (prio == 0) {
|
||||
if (IS_ENABLED(CONFIG_ENV_IS_IN_FAT))
|
||||
return ENVL_FAT;
|
||||
case ENVL_FAT:
|
||||
if (IS_ENABLED(CONFIG_ENV_IS_IN_MMC))
|
||||
return ENVL_MMC;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (IS_ENABLED(CONFIG_ENV_IS_IN_UBI))
|
||||
return ENVL_UBI;
|
||||
}
|
||||
|
||||
return ENVL_UNKNOWN;
|
||||
|
|
|
@ -24,6 +24,8 @@ static const struct udevice_id sun6i_rtc_ids[] = {
|
|||
{ .compatible = "allwinner,sun8i-v3-rtc" },
|
||||
{ .compatible = "allwinner,sun50i-h5-rtc" },
|
||||
{ .compatible = "allwinner,sun50i-h6-rtc" },
|
||||
{ .compatible = "allwinner,sun50i-h616-rtc" },
|
||||
{ .compatible = "allwinner,sun50i-r329-rtc" },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
|
|
@ -365,6 +365,7 @@ config SANDBOX_GPIO_COUNT
|
|||
config SUNXI_GPIO
|
||||
bool "Allwinner GPIO driver"
|
||||
depends on ARCH_SUNXI
|
||||
select SPL_STRTO if SPL
|
||||
help
|
||||
Support the GPIO device in Allwinner SoCs.
|
||||
|
||||
|
|
|
@ -125,9 +125,9 @@ struct sun4i_usb_phy_info {
|
|||
|
||||
struct sun4i_usb_phy_plat {
|
||||
void __iomem *pmu;
|
||||
int gpio_vbus;
|
||||
int gpio_vbus_det;
|
||||
int gpio_id_det;
|
||||
struct gpio_desc gpio_vbus;
|
||||
struct gpio_desc gpio_vbus_det;
|
||||
struct gpio_desc gpio_id_det;
|
||||
struct clk clocks;
|
||||
struct reset_ctl resets;
|
||||
int id;
|
||||
|
@ -224,8 +224,8 @@ static int sun4i_usb_phy_power_on(struct phy *phy)
|
|||
initial_usb_scan_delay = 0;
|
||||
}
|
||||
|
||||
if (usb_phy->gpio_vbus >= 0)
|
||||
gpio_set_value(usb_phy->gpio_vbus, SUNXI_GPIO_PULL_UP);
|
||||
if (dm_gpio_is_valid(&usb_phy->gpio_vbus))
|
||||
dm_gpio_set_value(&usb_phy->gpio_vbus, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -235,8 +235,8 @@ static int sun4i_usb_phy_power_off(struct phy *phy)
|
|||
struct sun4i_usb_phy_data *data = dev_get_priv(phy->dev);
|
||||
struct sun4i_usb_phy_plat *usb_phy = &data->usb_phy[phy->id];
|
||||
|
||||
if (usb_phy->gpio_vbus >= 0)
|
||||
gpio_set_value(usb_phy->gpio_vbus, SUNXI_GPIO_PULL_DISABLE);
|
||||
if (dm_gpio_is_valid(&usb_phy->gpio_vbus))
|
||||
dm_gpio_set_value(&usb_phy->gpio_vbus, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -386,8 +386,8 @@ int sun4i_usb_phy_vbus_detect(struct phy *phy)
|
|||
struct sun4i_usb_phy_plat *usb_phy = &data->usb_phy[phy->id];
|
||||
int err = 1, retries = 3;
|
||||
|
||||
if (usb_phy->gpio_vbus_det >= 0) {
|
||||
err = gpio_get_value(usb_phy->gpio_vbus_det);
|
||||
if (dm_gpio_is_valid(&usb_phy->gpio_vbus_det)) {
|
||||
err = dm_gpio_get_value(&usb_phy->gpio_vbus_det);
|
||||
/*
|
||||
* Vbus may have been provided by the board and just turned off
|
||||
* some milliseconds ago on reset. What we're measuring then is
|
||||
|
@ -395,7 +395,7 @@ int sun4i_usb_phy_vbus_detect(struct phy *phy)
|
|||
*/
|
||||
while (err > 0 && retries--) {
|
||||
mdelay(100);
|
||||
err = gpio_get_value(usb_phy->gpio_vbus_det);
|
||||
err = dm_gpio_get_value(&usb_phy->gpio_vbus_det);
|
||||
}
|
||||
} else if (data->vbus_power_supply) {
|
||||
err = regulator_get_enable(data->vbus_power_supply);
|
||||
|
@ -409,10 +409,10 @@ int sun4i_usb_phy_id_detect(struct phy *phy)
|
|||
struct sun4i_usb_phy_data *data = dev_get_priv(phy->dev);
|
||||
struct sun4i_usb_phy_plat *usb_phy = &data->usb_phy[phy->id];
|
||||
|
||||
if (usb_phy->gpio_id_det < 0)
|
||||
return usb_phy->gpio_id_det;
|
||||
if (!dm_gpio_is_valid(&usb_phy->gpio_id_det))
|
||||
return -1;
|
||||
|
||||
return gpio_get_value(usb_phy->gpio_id_det);
|
||||
return dm_gpio_get_value(&usb_phy->gpio_id_det);
|
||||
}
|
||||
|
||||
void sun4i_usb_phy_set_squelch_detect(struct phy *phy, bool enabled)
|
||||
|
@ -454,35 +454,42 @@ static int sun4i_usb_phy_probe(struct udevice *dev)
|
|||
if (data->cfg->missing_phys & BIT(i))
|
||||
continue;
|
||||
|
||||
phy->gpio_vbus = sunxi_name_to_gpio(info->gpio_vbus);
|
||||
if (phy->gpio_vbus >= 0) {
|
||||
ret = gpio_request(phy->gpio_vbus, "usb_vbus");
|
||||
ret = dm_gpio_lookup_name(info->gpio_vbus, &phy->gpio_vbus);
|
||||
if (ret == 0) {
|
||||
ret = dm_gpio_request(&phy->gpio_vbus, "usb_vbus");
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = gpio_direction_output(phy->gpio_vbus, 0);
|
||||
ret = dm_gpio_set_dir_flags(&phy->gpio_vbus,
|
||||
GPIOD_IS_OUT);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = dm_gpio_set_value(&phy->gpio_vbus, 0);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
phy->gpio_vbus_det = sunxi_name_to_gpio(info->gpio_vbus_det);
|
||||
if (phy->gpio_vbus_det >= 0) {
|
||||
ret = gpio_request(phy->gpio_vbus_det, "usb_vbus_det");
|
||||
ret = dm_gpio_lookup_name(info->gpio_vbus_det,
|
||||
&phy->gpio_vbus_det);
|
||||
if (ret == 0) {
|
||||
ret = dm_gpio_request(&phy->gpio_vbus_det,
|
||||
"usb_vbus_det");
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = gpio_direction_input(phy->gpio_vbus_det);
|
||||
ret = dm_gpio_set_dir_flags(&phy->gpio_vbus_det,
|
||||
GPIOD_IS_IN);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
phy->gpio_id_det = sunxi_name_to_gpio(info->gpio_id_det);
|
||||
if (phy->gpio_id_det >= 0) {
|
||||
ret = gpio_request(phy->gpio_id_det, "usb_id_det");
|
||||
ret = dm_gpio_lookup_name(info->gpio_id_det, &phy->gpio_id_det);
|
||||
if (ret == 0) {
|
||||
ret = dm_gpio_request(&phy->gpio_id_det, "usb_id_det");
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = gpio_direction_input(phy->gpio_id_det);
|
||||
ret = dm_gpio_set_dir_flags(&phy->gpio_id_det,
|
||||
GPIOD_IS_IN | GPIOD_PULL_UP);
|
||||
if (ret)
|
||||
return ret;
|
||||
sunxi_gpio_set_pull(phy->gpio_id_det, SUNXI_GPIO_PULL_UP);
|
||||
}
|
||||
|
||||
if (data->cfg->dedicated_clocks)
|
||||
|
|
Loading…
Add table
Reference in a new issue