133c02590SGregory CLEMENT // SPDX-License-Identifier: GPL-2.0+
233c02590SGregory CLEMENT /*
333c02590SGregory CLEMENT  * Marvell Armada AP and CP110 helper
433c02590SGregory CLEMENT  *
533c02590SGregory CLEMENT  * Copyright (C) 2018 Marvell
633c02590SGregory CLEMENT  *
733c02590SGregory CLEMENT  * Gregory Clement <gregory.clement@bootlin.com>
833c02590SGregory CLEMENT  *
933c02590SGregory CLEMENT  */
1033c02590SGregory CLEMENT 
1133c02590SGregory CLEMENT #include "armada_ap_cp_helper.h"
1233c02590SGregory CLEMENT #include <linux/device.h>
1333c02590SGregory CLEMENT #include <linux/of.h>
1433c02590SGregory CLEMENT #include <linux/of_address.h>
1533c02590SGregory CLEMENT 
1633c02590SGregory CLEMENT char *ap_cp_unique_name(struct device *dev, struct device_node *np,
1733c02590SGregory CLEMENT 			const char *name)
1833c02590SGregory CLEMENT {
1933c02590SGregory CLEMENT 	const __be32 *reg;
2033c02590SGregory CLEMENT 	u64 addr;
2133c02590SGregory CLEMENT 
2233c02590SGregory CLEMENT 	/* Do not create a name if there is no clock */
2333c02590SGregory CLEMENT 	if (!name)
2433c02590SGregory CLEMENT 		return NULL;
2533c02590SGregory CLEMENT 
2633c02590SGregory CLEMENT 	reg = of_get_property(np, "reg", NULL);
2733c02590SGregory CLEMENT 	addr = of_translate_address(np, reg);
2833c02590SGregory CLEMENT 	return devm_kasprintf(dev, GFP_KERNEL, "%llx-%s",
2933c02590SGregory CLEMENT 			      (unsigned long long)addr, name);
3033c02590SGregory CLEMENT }
31