Prevent enabling/disabling multiple times the same power domain to avoid
breakages due to the same power domains being referenced several times
by different device nodes.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
static int imx8m_power_domain_probe(struct udevice *dev)
{
struct imx8m_power_domain_plat *pdata = dev_get_plat(dev);
+ struct power_domain_plat *plat = dev_get_uclass_plat(dev);
int ret;
+ /* Every subdomain has its own device node */
+ plat->subdomains = 1;
+
/* Nothing to do for non-"power-domain" driver instances. */
if (!strstr(dev->name, "power-domain"))
return 0;
static int imx8mp_hsiomix_probe(struct udevice *dev)
{
struct imx8mp_hsiomix_priv *priv = dev_get_priv(dev);
+ struct power_domain_plat *plat = dev_get_uclass_plat(dev);
int ret;
+ /* Definitions are in imx8mp-power.h */
+ plat->subdomains = 5;
+
priv->base = dev_read_addr_ptr(dev);
ret = clk_get_by_name(dev, "usb", &priv->clk_usb);
static int imx8mp_mediamix_probe(struct udevice *dev)
{
+ struct power_domain_plat *plat = dev_get_uclass_plat(dev);
struct imx8mp_mediamix_priv *priv = dev_get_priv(dev);
int ret;
+ /* Definitions are in imx8mp-power.h */
+ plat->subdomains = 9;
+
priv->base = dev_read_addr_ptr(dev);
ret = clk_get_by_name(dev, "apb", &priv->clk_apb);