162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Marvell Armada AP and CP110 helper 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2018 Marvell 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Gregory Clement <gregory.clement@bootlin.com> 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "armada_ap_cp_helper.h" 1262306a36Sopenharmony_ci#include <linux/device.h> 1362306a36Sopenharmony_ci#include <linux/of.h> 1462306a36Sopenharmony_ci#include <linux/of_address.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cichar *ap_cp_unique_name(struct device *dev, struct device_node *np, 1762306a36Sopenharmony_ci const char *name) 1862306a36Sopenharmony_ci{ 1962306a36Sopenharmony_ci struct resource res; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci /* Do not create a name if there is no clock */ 2262306a36Sopenharmony_ci if (!name) 2362306a36Sopenharmony_ci return NULL; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci of_address_to_resource(np, 0, &res); 2662306a36Sopenharmony_ci return devm_kasprintf(dev, GFP_KERNEL, "%llx-%s", 2762306a36Sopenharmony_ci (unsigned long long)res.start, name); 2862306a36Sopenharmony_ci} 29