21922 Commits

Author SHA1 Message Date
Samuel Holland
15b76c70a0 sunxi: Add a U-Boot port for the Allwinner D1 NeZha
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 19:33:15 -06:00
Samuel Holland
6061fae0a4 sunxi: Convert some Kconfig defaults to implies
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:37:21 -06:00
Samuel Holland
862a2c2225 board: riscv: Sort target configs alphabetically
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:37:21 -06:00
Samuel Holland
84bd67b166 riscv: cpu: Add cache operations for T-HEAD CPUs
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:37:20 -06:00
Samuel Holland
617e87ea64 usb: musb-new: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:37:20 -06:00
Samuel Holland
e66959f206 phy: sun4i-usb: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:37:19 -06:00
Samuel Holland
d7b2b52301 mmc: sunxi: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:37:18 -06:00
Samuel Holland
f2b145ec71 gpio: sunxi: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:37:18 -06:00
Samuel Holland
ad6a5b75f4 Merge branch 'patch/axp-gpio' into allwinner
# Conflicts:
#	arch/arm/mach-sunxi/Kconfig
2022-01-22 18:35:10 -06:00
Samuel Holland
45d6cf3636 Merge branch 'patch/axp-vbus' into allwinner
# Conflicts:
#	arch/arm/include/asm/arch-sunxi/gpio.h
2022-01-22 18:35:05 -06:00
Samuel Holland
a778babf4b Merge branch 'patch/dm-pinctrl' into allwinner 2022-01-22 18:34:58 -06:00
Samuel Holland
e7af07bee0 Merge branch 'patch/sunxi-gpio' into allwinner 2022-01-22 18:34:47 -06:00
Samuel Holland
4993e3396a Merge branch 'patch/mkimage-toc0' into allwinner 2022-01-22 18:34:43 -06:00
Samuel Holland
3815a68d05 Merge branch 'patch/h6-dts' into allwinner 2022-01-22 18:34:37 -06:00
Samuel Holland
438c4b58bd Merge branch 'patch/h3-scp' into allwinner 2022-01-22 18:34:32 -06:00
Samuel Holland
708afef15e Merge branch 'patch/h3-fit' into allwinner 2022-01-22 18:34:29 -06:00
Samuel Holland
9ac80e3c3d gpio: axp: Bind via device tree
Now that the PMIC has a DM driver and binds device tree subnodes, the
GPIO device can be bound that way, instead of from inside board code.

Since the driver still uses the single set of register definitions from
axpXXX.h (as selected by AXPxxx_POWER), it does not differentiate among
the supported compatibles.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:31:41 -06:00
Samuel Holland
b4dc5f15a0 ARM: dts: sunxi: Add AXP221 and AXP809 GPIO nodes
These PMICs each have two GPIO pins, and are supported by the axp_gpio
driver. In order to convert the axp_gpio driver to probe using the
device tree, the corresponding device tree nodes must be present. Add
them, following the same binding as the AXP209 and AXP813.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:31:40 -06:00
Samuel Holland
1f9a79da9e phy: sun4i-usb: Use DM_GPIO for id/vbus_det GPIOs
Now that the sunxi_gpio driver handles pull-up/down via the driver
model, we can switch to DM_GPIO for these pins with no loss in
functionality. Since the driver now gets its pin configuration from
the device tree, we can remove the Kconfig symbols.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:31:29 -06:00
Samuel Holland
b824c483f8 gpio: axp/sunxi: Remove virtual VBUS enable GPIO
Now that this functionality is modeled using the device tree and
regulator uclass, the named GPIO is not referenced anywhere. Remove
it, along with the rest of the support for AXP virtual GPIOs.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:31:10 -06:00
Samuel Holland
c2bae02085 sunxi: Remove obsolete USBx_VBUS_PIN Kconfig symbols
Now that the USB PHY driver uses the device tree to get VBUS supply
regulators, these Kconfig symbols are unused. Remove them.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:31:10 -06:00
Samuel Holland
cd9603b897 gpio: axp/sunxi: Remove virtual VBUS detection GPIO
Now that this functionality is modeled using the device tree and
regulator uclass, the named GPIO is not referenced anywhere. Remove it.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:30:08 -06:00
Samuel Holland
a4c31d1daf ARM: dts: sun6i: mixtile-loftq: Add USB1 VBUS regulator
This board is configured with CONFIG_USB1_VBUS_PIN="PH24", but no
regulator exists in its device tree. Add the regulator, so USB will
continue to work when the PHY driver switches to using the regulator
uclass instead of a GPIO.

Update the device tree here because it does not exist in Linux.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:30:08 -06:00
Samuel Holland
d728c8424b pwm: sunxi: Remove non-DM pin setup
This is now handled automatically by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:29:54 -06:00
Samuel Holland
e0a83d56e9 sunxi: Remove options and setup code for I2C2-I2C4
These options are not currently enabled anywhere. Any new users should
use DM clocks and pinctrl.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:29:53 -06:00
Samuel Holland
2cc69c5c94 sunxi: Remove non-DM GMAC pin setup
This is now handled automatically by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:29:52 -06:00
Samuel Holland
7a8e9da968 net: sunxi_emac: Remove non-DM pin setup
This is now handled automatically by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:29:52 -06:00
Samuel Holland
433233d5b9 sunxi: Skip non-DM UART pin setup when PINCTRL=y
When a pinctrl driver is available, it will take care of setting up
these pins. However, for now this code is still needed in SPL.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:29:52 -06:00
Samuel Holland
de84b9ce3b sunxi: pinctrl: Create the driver skeleton
Create a do-nothing driver for each sunxi pin controller variant.

Since only one driver can automatically bind to a DT node, since the
GPIO driver already requires a manual binding process, and since the
pinctrl driver needs access to some of the same information, refactor
the GPIO driver to be bound by the pinctrl driver. This commit should
cause no functional change.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:29:50 -06:00
Samuel Holland
5f5b3bf681 [DO NOT MERGE] sunxi: psci: Delegate PSCI to SCPI
This adds a new PSCI implementation which communicates with SCP firmware
running on the AR100 using the SCPI protocol. This allows it to support
the full set of PSCI v1.1 features, including CPU idle states, system
suspend, and multiple reset methods.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:51 -06:00
Samuel Holland
b2111b57c9 arm: psci: Add definitions for PSCI v1.1
Add the new option, function IDs, and prototypes for PSCI v1.1
implementations. In the process, fix some issues with the existing
definitions:
 - Fix the incorrectly-named ARM_PSCI_0_2_FN64_SYSTEM_RESET2.
 - Replace the deprecated "affinity_level" naming with "power_level".

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:50 -06:00
Samuel Holland
5b2e7fbd61 sunxi: Enable support for SCP firmware on H3
Now that issues with the BROM have been sorted out, we can implement
PSCI system suspend on H3 by delegating to SCP firmware. Let's start by
including the firmware in the FIT image and starting the coprocessor if
valid firmware is loaded.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:50 -06:00
Samuel Holland
72c441c595 arm: dts: sunxi: h3: Add nodes for AR100 remoteproc
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:50 -06:00
Samuel Holland
7fb1ce8559 sunxi: psci: Add support for H3 CPU 0 hotplug
Due to a bug in the H3 SoC, where the CPU 0 hotplug flag cannot be
written, resuming CPU 0 requires using the "Super Standby" code path in
the BROM instead of the hotplug path. This path requires jumping to an
eGON image in SRAM.

Add support to the build system to generate this eGON image and include
it in the FIT, and add code to direct the BROM to its location in SRAM.

Since the Super Standby code path in the BROM initializes the CPU and
AHB1 clocks to 24 MHz, those registers need to be restored after control
passes back to U-Boot. Furthermore, because the BROM lowers the AHB1
clock divider to /1 before switching to the lower-frequency parent,
PLL_PERIPH0 must be bypassed to prevent AHB1 from temporarily running at
600 MHz. Otherwise, this locks up the SoC.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:50 -06:00
Samuel Holland
cb9c72a9be sunxi: psci: Avoid hanging when CPU 0 is hot-unplugged
Do not try to send an SGI from CPU 0 to itself. Since FIQs are masked
when entering monitor mode, this will hang. Plus, CPU 0 cannot fully
power itself off anyway. Instead, have it turn FIQs back on and continue
servicing SGIs from other cores.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:49 -06:00
Samuel Holland
05bd4f95e5 sunxi: gpio: Add per-bank drive and pull setters
The GPIO and pinctrl drivers need these setters for pin configuration.
Since they are DM drivers, they should not be using hardcoded base
addresses. Factor out variants of the setter functions which take a
pointer to the GPIO bank's MMIO registers.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:37 -06:00
Samuel Holland
198cf0af12 sunxi: gpio: Return void from setter functions
The return values of these functions are always zero, and they are
never checked. Since they are not needed, remove them.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:37 -06:00
Samuel Holland
4864e2d00e sunxi: binman: Enable SPL FIT loading for 32-bit SoCs
Now that Crust (SCP firmware) has support for H3, we need a FIT image to
load it. H3 also needs to load a SoC-specific eGon blob to support CPU 0
hotplug. Let's first enable FIT support before adding extra firmware.

Update the binman description to work on either 32-bit or 64-bit SoCs:
 - Make BL31 optional, since it is not used on 32-bit SoCs (though BL32
   may be used in the future).
 - Explicitly set the minimum offset of the FIT to 32 KiB, since SPL on
   some boards is still only 24 KiB large even with FIT support enabled.
   CONFIG_SPL_PAD_TO cannot be used because it is not defined for H616.

FIT unlocks more features (signatures, multiple DTBs, etc.), so enable
it by default. A10 (sun4i) only has 24 KiB of SRAM A1, so it needs
SPL_FIT_IMAGE_TINY. For simplicity, enable that option everywhere.

Cover-letter:
sunxi: SPL FIT support for 32-bit sunxi SoCs
This series makes the necessary changes so 32-bit sunxi SoCs can load
additional device trees or firmware from SPL along with U-Boot proper.

There was no existing binman entry property that put the FIT at the
right offset. The minimum offset is 32k, but this matches neither the
SPL size (which is no more than 24k on some SoCs) nor the FIT alignment
(which is 512 bytes in practice due to SPL size constraints). So instead
of adding a new property, I fixed what is arguably a bug in the offset
property -- though this strategy will not work if someone is
intentionally creating overlapping entries.
END
Series-to: sunxi
Series-to: sjg
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:15 -06:00
Samuel Holland
7e12bd4e64 ARM: dts: sun50i: H6: Sync from Linux v5.15
Copy the devicetree source for the H6 SoC and all existing boards
verbatim from the Linux v5.15 tag.

This update should not impact any existing U-Boot functionality.

Series-to: sunxi
Cover-letter:
sunxi: Devicetree sync from Linux v5.15
This series brings all of our devicetrees up to date with the latest
stable Linux version.

<< something about ABI compat >>

Here is the list of new files which were not added by this sync:
 - sun4i-a10-topwise-a721.dts
 - sun50i-a100-allwinner-perf1.dts
 - sun50i-a100.dtsi
 - sun50i-h6-pine-h64-model-b.dts
 - sun5i-a13-licheepi-one.dts
 - sun5i-a13-pocketbook-touch-lux-3.dts
 - sun5i-gr8-evb.dts
 - sun7i-a20-linutronix-testbox-v2.dts
 - sun7i-a20-olinuxino-lime-emmc.dts
 - sun8i-a23-ippo-q8h-v1.2.dts
 - sun8i-a23-ippo-q8h-v5.dts
 - sun8i-a33-et-q8-v1.6.dts
 - sun8i-a33-ippo-q8h-v1.2.dts
 - sun8i-h3-nanopi-r1.dts
 - sun8i-r16-nintendo-nes-classic.dts
 - sun8i-r16-nintendo-super-nes-classic.dts
 - sun8i-r40-feta40i.dtsi
 - sun8i-r40-oka40i-c.dts
 - sun8i-s3-elimo-impetus.dtsi
 - sun8i-s3-elimo-initium.dts
 - sun8i-t3-cqa3t-bv3.dts
 - sun8i-v3-sl631-imx179.dts
 - sun8i-v3-sl631.dtsi
END

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:07 -06:00
Samuel Holland
ddabd8c1f4 ARM: dts: sun50i: H5: Sync from Linux v5.15
Copy the devicetree source for the H5 SoC and all existing boards
from the Linux v5.15 tag, with minor changes to account for the
different directory layout for 64-bit SoCs.

While there were some recent changes to the shared H3/H5 devicetree,
the only H5-specific change is fixing the EMAC phy-mode in one board.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:07 -06:00
Samuel Holland
d9233db2d0 ARM: dts: sun50i: A64: Sync from Linux v5.15
Copy the devicetree source for the A64 SoC and all existing boards
verbatim from the Linux v5.15 tag.

As with the other SoCs, updates of note are EMAC phy-mode changes to set
RGMII delays.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:07 -06:00
Samuel Holland
53c18a1a6c ARM: dts: sun8i: R40: Sync from Linux v5.15
Copy the devicetree for the R40 SoC verbatim from the Linux v5.15 tag.

None of the existing boards had any devicetree updates.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:07 -06:00
Samuel Holland
3c1ffdb538 ARM: dts: sun8i: V3/V3s/S3: Sync from Linux v5.15
Copy the devicetree source for the V3(s)/S3 SoCs and all existing boards
verbatim from the Linux v5.15 tag.

This update should not impact any existing U-Boot functionality.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:07 -06:00
Samuel Holland
c178aa4059 ARM: dts: sun8i: H2+/H3: Sync from Linux v5.15
Copy the devicetree source for the H2+/H3 SoCs and all existing boards
verbatim from the Linux v5.15 tag.

As with the other SoCs, updates of note are EMAC phy-mode changes to set
RGMII delays.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:07 -06:00
Samuel Holland
42d8ad7706 ARM: dts: sun8i: A83T: Sync from Linux v5.15
Copy the devicetree source for the A83T SoC and all existing boards
verbatim from the Linux v5.15 tag.

As with the other SoCs, updates of note are EMAC phy-mode changes to set
RGMII delays, and adding detection GPIO properties in the USB PHY nodes.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:06 -06:00
Samuel Holland
8f52670674 ARM: dts: sun9i: Sync from Linux v5.15
Copy the devicetree source for the A80 SoC and all existing boards
verbatim from the Linux v5.15 tag.

This update should not impact any existing U-Boot functionality.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:06 -06:00
Samuel Holland
c793425798 ARM: dts: sunxi: A13/A31/A23/A33: Sync from Linux v5.15
Copy the devicetree source for the A10s/A13/GR8, A31(s), and A23/A33/R16
SoCs and all existing boards verbatim from the Linux v5.15 tag.

These SoCs are combined into one commit due to some interdependencies:
 - The unit addresses were removed from bitbanged I2C buses, which
   drives a Kconfig default change. This affects sun5i-a13-utoo-p66.dts
   and sun6i-a31-colombus.dts.
 - The pinctrl nodes were renamed, including some used by the shared
   sunxi-reference-design-tablet.dtsi.

This commit renames the file sun8i-r16-nintendo-nes-classic-edition.dts
to sun8i-r16-nintendo-nes-classic.dts to match the Linux tree.

As with the other SoCs, updates of note are EMAC phy-mode changes to set
RGMII delays, conversion of GPIO pull-up from pinconf to GPIO flags, and
renaming the detection GPIO properties in the USB PHY nodes.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:06 -06:00
Samuel Holland
2d8f747ee2 ARM: dts: sun7i: Sync from Linux v5.15
Copy the devicetree source for the A20 SoC and all existing boards
verbatim from the Linux v5.15 tag.

An important change here is to the GMAC phy-mode property on several
boards; this needs to be set correctly once the rtl8211e driver starts
configuring the PHY RGMII delays from the devicetree.

This update also includes changes to the USB PHY detection GPIO
properties which are needed to convert that driver to use the DM GPIO
framework.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:06 -06:00
Samuel Holland
0bbdabd207 ARM: dts: sun4i: Sync from Linux v5.15
Copy the devicetree source for the A10 SoC and all existing boards
verbatim from the Linux v5.15 tag.

While this update should not impact any existing U-Boot functionality,
the changes to the USB PHY detection GPIO properties are needed to
convert that driver to use the DM GPIO framework.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:28:06 -06:00
Samuel Holland
f99d47238a sunxi: DT: H6: Add USB3 to Pine H64 DTS
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-01-22 18:27:57 -06:00