SPDX: Convert all of our single license tags to Linux Kernel style
[oweals/u-boot.git] / arch / arm / mach-aspeed / ast2500 / clk_ast2500.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright (C) 2016 Google, Inc
4  */
5
6 #include <common.h>
7 #include <dm.h>
8 #include <asm/io.h>
9 #include <asm/arch/scu_ast2500.h>
10
11 int ast_get_clk(struct udevice **devp)
12 {
13         return uclass_get_device_by_driver(UCLASS_CLK,
14                         DM_GET_DRIVER(aspeed_ast2500_scu), devp);
15 }
16
17 void *ast_get_scu(void)
18 {
19         struct ast2500_clk_priv *priv;
20         struct udevice *dev;
21         int ret;
22
23         ret = ast_get_clk(&dev);
24         if (ret)
25                 return ERR_PTR(ret);
26
27         priv = dev_get_priv(dev);
28
29         return priv->scu;
30 }
31
32 void ast_scu_unlock(struct ast2500_scu *scu)
33 {
34         writel(SCU_UNLOCK_VALUE, &scu->protection_key);
35         while (!readl(&scu->protection_key))
36                 ;
37 }
38
39 void ast_scu_lock(struct ast2500_scu *scu)
40 {
41         writel(~SCU_UNLOCK_VALUE, &scu->protection_key);
42         while (readl(&scu->protection_key))
43                 ;
44 }