Commit bd4ce2d7 authored by Ulf Hansson's avatar Ulf Hansson
Browse files

ARM: ux500: Convert power-domain code into a regular platform driver



To make the code more standalone and moveable, let's convert it into a
platform driver.

Cc: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 444ffc82
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@
#include <asm/mach/map.h>
#include <asm/mach/arch.h>

#include "pm_domains.h"

static int __init ux500_l2x0_unlock(void)
{
	int i;
@@ -115,9 +113,6 @@ static const struct of_device_id u8500_local_bus_nodes[] = {

static void __init u8500_init_machine(void)
{
	/* Initialize ux500 power domains */
	ux500_pm_domains_init();

	of_platform_populate(NULL, u8500_local_bus_nodes,
			     NULL, NULL);
}
+20 −5
Original line number Diff line number Diff line
@@ -6,6 +6,9 @@
 *
 * Implements PM domains using the generic PM domain for ux500.
 */
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/printk.h>
#include <linux/slab.h>
#include <linux/err.h>
@@ -13,7 +16,6 @@
#include <linux/pm_domain.h>

#include <dt-bindings/arm/ux500_pm_domains.h>
#include "pm_domains.h"

static int pd_power_off(struct generic_pm_domain *domain)
{
@@ -49,18 +51,17 @@ static struct generic_pm_domain *ux500_pm_domains[NR_DOMAINS] = {
	[DOMAIN_VAPE] = &ux500_pm_domain_vape,
};

static const struct of_device_id ux500_pm_domain_matches[] __initconst = {
static const struct of_device_id ux500_pm_domain_matches[] = {
	{ .compatible = "stericsson,ux500-pm-domains", },
	{ },
};

int __init ux500_pm_domains_init(void)
static int ux500_pm_domains_probe(struct platform_device *pdev)
{
	struct device_node *np;
	struct device_node *np = pdev->dev.of_node;
	struct genpd_onecell_data *genpd_data;
	int i;

	np = of_find_matching_node(NULL, ux500_pm_domain_matches);
	if (!np)
		return -ENODEV;

@@ -77,3 +78,17 @@ int __init ux500_pm_domains_init(void)
	of_genpd_add_provider_onecell(np, genpd_data);
	return 0;
}

static struct platform_driver ux500_pm_domains_driver = {
	.probe  = ux500_pm_domains_probe,
	.driver = {
		.name = "ux500_pm_domains",
		.of_match_table = ux500_pm_domain_matches,
	},
};

static int __init ux500_pm_domains_init(void)
{
	return platform_driver_register(&ux500_pm_domains_driver);
}
arch_initcall(ux500_pm_domains_init);

arch/arm/mach-ux500/pm_domains.h

deleted100644 → 0
+0 −17
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2014 Linaro Ltd.
 *
 * Author: Ulf Hansson <ulf.hansson@linaro.org>
 */

#ifndef __MACH_UX500_PM_DOMAINS_H
#define __MACH_UX500_PM_DOMAINS_H

#ifdef CONFIG_PM_GENERIC_DOMAINS
extern int __init ux500_pm_domains_init(void);
#else
static inline int ux500_pm_domains_init(void) { return 0; }
#endif

#endif