mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-02 09:30:10 +00:00
65e25bea59
In the spirit of using the same base name for all of these related macros, rename this to have the operation at the end. This is not widely used so the impact is fairly small. Signed-off-by: Simon Glass <sjg@chromium.org>
45 lines
810 B
C
45 lines
810 B
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (C) 2016 Google, Inc
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <dm.h>
|
|
#include <asm/io.h>
|
|
#include <asm/arch/scu_ast2500.h>
|
|
#include <linux/err.h>
|
|
|
|
int ast_get_clk(struct udevice **devp)
|
|
{
|
|
return uclass_get_device_by_driver(UCLASS_CLK,
|
|
DM_DRIVER_GET(aspeed_ast2500_scu), devp);
|
|
}
|
|
|
|
void *ast_get_scu(void)
|
|
{
|
|
struct ast2500_clk_priv *priv;
|
|
struct udevice *dev;
|
|
int ret;
|
|
|
|
ret = ast_get_clk(&dev);
|
|
if (ret)
|
|
return ERR_PTR(ret);
|
|
|
|
priv = dev_get_priv(dev);
|
|
|
|
return priv->scu;
|
|
}
|
|
|
|
void ast_scu_unlock(struct ast2500_scu *scu)
|
|
{
|
|
writel(SCU_UNLOCK_VALUE, &scu->protection_key);
|
|
while (!readl(&scu->protection_key))
|
|
;
|
|
}
|
|
|
|
void ast_scu_lock(struct ast2500_scu *scu)
|
|
{
|
|
writel(~SCU_UNLOCK_VALUE, &scu->protection_key);
|
|
while (readl(&scu->protection_key))
|
|
;
|
|
}
|