18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Marvell Armada AP and CP110 helper 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2018 Marvell 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Gregory Clement <gregory.clement@bootlin.com> 88c2ecf20Sopenharmony_ci * 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include "armada_ap_cp_helper.h" 128c2ecf20Sopenharmony_ci#include <linux/device.h> 138c2ecf20Sopenharmony_ci#include <linux/of.h> 148c2ecf20Sopenharmony_ci#include <linux/of_address.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cichar *ap_cp_unique_name(struct device *dev, struct device_node *np, 178c2ecf20Sopenharmony_ci const char *name) 188c2ecf20Sopenharmony_ci{ 198c2ecf20Sopenharmony_ci const __be32 *reg; 208c2ecf20Sopenharmony_ci u64 addr; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci /* Do not create a name if there is no clock */ 238c2ecf20Sopenharmony_ci if (!name) 248c2ecf20Sopenharmony_ci return NULL; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci reg = of_get_property(np, "reg", NULL); 278c2ecf20Sopenharmony_ci addr = of_translate_address(np, reg); 288c2ecf20Sopenharmony_ci return devm_kasprintf(dev, GFP_KERNEL, "%llx-%s", 298c2ecf20Sopenharmony_ci (unsigned long long)addr, name); 308c2ecf20Sopenharmony_ci} 31