time.c (1051B)
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * PS3 time and rtc routines. 4 * 5 * Copyright (C) 2006 Sony Computer Entertainment Inc. 6 * Copyright 2006 Sony Corp. 7 */ 8 9#include <linux/kernel.h> 10#include <linux/platform_device.h> 11#include <linux/rtc.h> 12 13#include <asm/firmware.h> 14#include <asm/lv1call.h> 15#include <asm/ps3.h> 16 17#include "platform.h" 18 19void __init ps3_calibrate_decr(void) 20{ 21 int result; 22 u64 tmp; 23 24 result = ps3_repository_read_be_tb_freq(0, &tmp); 25 BUG_ON(result); 26 27 ppc_tb_freq = tmp; 28 ppc_proc_freq = ppc_tb_freq * 40; 29} 30 31static u64 read_rtc(void) 32{ 33 int result; 34 u64 rtc_val; 35 u64 tb_val; 36 37 result = lv1_get_rtc(&rtc_val, &tb_val); 38 BUG_ON(result); 39 40 return rtc_val; 41} 42 43time64_t __init ps3_get_boot_time(void) 44{ 45 return read_rtc() + ps3_os_area_get_rtc_diff(); 46} 47 48static int __init ps3_rtc_init(void) 49{ 50 struct platform_device *pdev; 51 52 if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) 53 return -ENODEV; 54 55 pdev = platform_device_register_simple("rtc-ps3", -1, NULL, 0); 56 57 return PTR_ERR_OR_ZERO(pdev); 58} 59device_initcall(ps3_rtc_init);