forked from dlink-dir_819/openwrt
		
	Add u-boot bootloader based on 2023.01 to support D1-based boards, currently: - Dongshan Nezha STU - LicheePi RV Dock - MangoPi MQ-Pro - Nezha D1 Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From e07c1d516c1a7842510d22a7cf88666d500a9a9a Mon Sep 17 00:00:00 2001
 | |
| From: Samuel Holland <samuel@sholland.org>
 | |
| Date: Sun, 22 Aug 2021 21:35:45 -0500
 | |
| Subject: [PATCH 05/90] power: regulator: Add a driver for the AXP USB power
 | |
|  supply
 | |
| 
 | |
| This driver reports the presence/absence of voltage on the PMIC's USB
 | |
| VBUS pin. This information is used by the USB PHY driver. The
 | |
| corresponding Linux driver uses the power supply class, which does not
 | |
| exist in U-Boot. UCLASS_REGULATOR seems to be the closest match.
 | |
| 
 | |
| Signed-off-by: Samuel Holland <samuel@sholland.org>
 | |
| ---
 | |
|  drivers/power/regulator/Kconfig         |  7 ++++
 | |
|  drivers/power/regulator/Makefile        |  1 +
 | |
|  drivers/power/regulator/axp_usb_power.c | 49 +++++++++++++++++++++++++
 | |
|  3 files changed, 57 insertions(+)
 | |
|  create mode 100644 drivers/power/regulator/axp_usb_power.c
 | |
| 
 | |
| --- a/drivers/power/regulator/Kconfig
 | |
| +++ b/drivers/power/regulator/Kconfig
 | |
| @@ -43,6 +43,13 @@ config REGULATOR_AS3722
 | |
|  	  but does not yet support change voltages. Currently this must be
 | |
|  	  done using direct register writes to the PMIC.
 | |
|  
 | |
| +config REGULATOR_AXP_USB_POWER
 | |
| +	bool "Enable driver for X-Powers AXP PMIC USB power supply"
 | |
| +	depends on DM_REGULATOR && PMIC_AXP
 | |
| +	help
 | |
| +	  Enable support for reading the USB power supply status from
 | |
| +	  X-Powers AXP2xx and AXP8xx PMICs.
 | |
| +
 | |
|  config DM_REGULATOR_BD71837
 | |
|  	bool "Enable Driver Model for ROHM BD71837/BD71847 regulators"
 | |
|  	depends on DM_REGULATOR && DM_PMIC_BD71837
 | |
| --- a/drivers/power/regulator/Makefile
 | |
| +++ b/drivers/power/regulator/Makefile
 | |
| @@ -7,6 +7,7 @@
 | |
|  obj-$(CONFIG_$(SPL_)DM_REGULATOR) += regulator-uclass.o
 | |
|  obj-$(CONFIG_REGULATOR_ACT8846) += act8846.o
 | |
|  obj-$(CONFIG_REGULATOR_AS3722)	+= as3722_regulator.o
 | |
| +obj-$(CONFIG_$(SPL_)REGULATOR_AXP_USB_POWER) += axp_usb_power.o
 | |
|  obj-$(CONFIG_$(SPL_)DM_REGULATOR_DA9063) += da9063.o
 | |
|  obj-$(CONFIG_DM_REGULATOR_MAX77686) += max77686.o
 | |
|  obj-$(CONFIG_DM_REGULATOR_NPCM8XX) += npcm8xx_regulator.o
 | |
| --- /dev/null
 | |
| +++ b/drivers/power/regulator/axp_usb_power.c
 | |
| @@ -0,0 +1,49 @@
 | |
| +// SPDX-License-Identifier: GPL-2.0+
 | |
| +
 | |
| +#include <dm/device.h>
 | |
| +#include <errno.h>
 | |
| +#include <power/pmic.h>
 | |
| +#include <power/regulator.h>
 | |
| +
 | |
| +#define AXP_POWER_STATUS		0x00
 | |
| +#define AXP_POWER_STATUS_VBUS_PRESENT		BIT(5)
 | |
| +
 | |
| +static int axp_usb_power_get_enable(struct udevice *dev)
 | |
| +{
 | |
| +	int ret;
 | |
| +
 | |
| +	ret = pmic_reg_read(dev->parent, AXP_POWER_STATUS);
 | |
| +	if (ret < 0)
 | |
| +		return ret;
 | |
| +
 | |
| +	return !!(ret & AXP_POWER_STATUS_VBUS_PRESENT);
 | |
| +}
 | |
| +
 | |
| +static const struct dm_regulator_ops axp_usb_power_ops = {
 | |
| +	.get_enable		= axp_usb_power_get_enable,
 | |
| +};
 | |
| +
 | |
| +static int axp_usb_power_probe(struct udevice *dev)
 | |
| +{
 | |
| +	struct dm_regulator_uclass_plat *uc_plat = dev_get_uclass_plat(dev);
 | |
| +
 | |
| +	uc_plat->type = REGULATOR_TYPE_FIXED;
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +static const struct udevice_id axp_usb_power_ids[] = {
 | |
| +	{ .compatible = "x-powers,axp202-usb-power-supply" },
 | |
| +	{ .compatible = "x-powers,axp221-usb-power-supply" },
 | |
| +	{ .compatible = "x-powers,axp223-usb-power-supply" },
 | |
| +	{ .compatible = "x-powers,axp813-usb-power-supply" },
 | |
| +	{ }
 | |
| +};
 | |
| +
 | |
| +U_BOOT_DRIVER(axp_usb_power) = {
 | |
| +	.name		= "axp_usb_power",
 | |
| +	.id		= UCLASS_REGULATOR,
 | |
| +	.of_match	= axp_usb_power_ids,
 | |
| +	.probe		= axp_usb_power_probe,
 | |
| +	.ops		= &axp_usb_power_ops,
 | |
| +};
 |