mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
873e65bc09
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation version 2 of the license this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 59 temple place suite 330 boston ma 02111 1307 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 83 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070034.021731668@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
60 lines
1.0 KiB
C
60 lines
1.0 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* PS3 time and rtc routines.
|
|
*
|
|
* Copyright (C) 2006 Sony Computer Entertainment Inc.
|
|
* Copyright 2006 Sony Corp.
|
|
*/
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/rtc.h>
|
|
|
|
#include <asm/firmware.h>
|
|
#include <asm/lv1call.h>
|
|
#include <asm/ps3.h>
|
|
|
|
#include "platform.h"
|
|
|
|
void __init ps3_calibrate_decr(void)
|
|
{
|
|
int result;
|
|
u64 tmp;
|
|
|
|
result = ps3_repository_read_be_tb_freq(0, &tmp);
|
|
BUG_ON(result);
|
|
|
|
ppc_tb_freq = tmp;
|
|
ppc_proc_freq = ppc_tb_freq * 40;
|
|
}
|
|
|
|
static u64 read_rtc(void)
|
|
{
|
|
int result;
|
|
u64 rtc_val;
|
|
u64 tb_val;
|
|
|
|
result = lv1_get_rtc(&rtc_val, &tb_val);
|
|
BUG_ON(result);
|
|
|
|
return rtc_val;
|
|
}
|
|
|
|
time64_t __init ps3_get_boot_time(void)
|
|
{
|
|
return read_rtc() + ps3_os_area_get_rtc_diff();
|
|
}
|
|
|
|
static int __init ps3_rtc_init(void)
|
|
{
|
|
struct platform_device *pdev;
|
|
|
|
if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
|
|
return -ENODEV;
|
|
|
|
pdev = platform_device_register_simple("rtc-ps3", -1, NULL, 0);
|
|
|
|
return PTR_ERR_OR_ZERO(pdev);
|
|
}
|
|
device_initcall(ps3_rtc_init);
|