mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-16 14:08:45 +00:00
imx8: power: Add PD device lookup interface to power domain uclass
Add power_domain_lookup_name interface to power domain uclass to find a power domain device by its DTB node name, not using its associated client device. Through this interface, we can operate the power domain devices directly. This is needed for non-DM drivers. Modified from Ye's NXP downstream patch only for legacy imx8 power domain driver, since we have not migrated to use new power domain driver. Signed-off-by: Ye Li <ye.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
e6405713d8
commit
8c0a1c6de8
2 changed files with 35 additions and 0 deletions
|
@ -5,6 +5,11 @@
|
|||
|
||||
#include <asm/arch/sci/sci.h>
|
||||
#include <asm/mach-imx/sys_proto.h>
|
||||
#include <asm/arch/power-domain.h>
|
||||
#include <dm/platdata.h>
|
||||
#include <dm/device-internal.h>
|
||||
#include <dm/device.h>
|
||||
#include <power-domain.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
struct pass_over_info_t {
|
||||
|
@ -21,3 +26,5 @@ void build_info(void);
|
|||
enum boot_device get_boot_device(void);
|
||||
int print_bootinfo(void);
|
||||
int sc_pm_setup_uart(sc_rsrc_t uart_rsrc, sc_pm_clock_rate_t clk_rate);
|
||||
int imx8_power_domain_lookup_name(const char *name,
|
||||
struct power_domain *power_domain);
|
||||
|
|
|
@ -19,6 +19,34 @@ struct imx8_power_domain_priv {
|
|||
bool state_on;
|
||||
};
|
||||
|
||||
int imx8_power_domain_lookup_name(const char *name,
|
||||
struct power_domain *power_domain)
|
||||
{
|
||||
struct udevice *dev;
|
||||
struct power_domain_ops *ops;
|
||||
int ret;
|
||||
|
||||
debug("%s(power_domain=%p name=%s)\n", __func__, power_domain, name);
|
||||
|
||||
ret = uclass_get_device_by_name(UCLASS_POWER_DOMAIN, name, &dev);
|
||||
if (ret) {
|
||||
printf("%s fail: %s, ret = %d\n", __func__, name, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ops = (struct power_domain_ops *)dev->driver->ops;
|
||||
power_domain->dev = dev;
|
||||
ret = ops->request(power_domain);
|
||||
if (ret) {
|
||||
debug("ops->request() failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
debug("%s ok: %s\n", __func__, dev->name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int imx8_power_domain_request(struct power_domain *power_domain)
|
||||
{
|
||||
debug("%s(power_domain=%p)\n", __func__, power_domain);
|
||||
|
|
Loading…
Add table
Reference in a new issue