Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b5f037a authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Kyle McMartin
Browse files

powerpc/ps3: Add rtc-ps3



Create a real RTC driver for PS3, and unhook the deprecated
ppc_md.[gs]et_rtc_time.

Signed-off-by: default avatarGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Acked-by: default avatarAlessandro Zummo <a.zummo@towertech.it>
Acked-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: default avatarKyle McMartin <kyle@mcmartin.ca>
parent bcd68a70
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -50,6 +50,9 @@ enum ps3_param_av_multi_out {

enum ps3_param_av_multi_out ps3_os_area_get_av_multi_out(void);

extern u64 ps3_os_area_get_rtc_diff(void);
extern void ps3_os_area_set_rtc_diff(u64 rtc_diff);

/* dma routines */

enum ps3_dma_page_size {
+2 −0
Original line number Diff line number Diff line
@@ -808,6 +808,7 @@ u64 ps3_os_area_get_rtc_diff(void)
{
	return saved_params.rtc_diff;
}
EXPORT_SYMBOL(ps3_os_area_get_rtc_diff);

/**
 * ps3_os_area_set_rtc_diff - Set the rtc diff value.
@@ -823,6 +824,7 @@ void ps3_os_area_set_rtc_diff(u64 rtc_diff)
		os_area_queue_work();
	}
}
EXPORT_SYMBOL(ps3_os_area_set_rtc_diff);

/**
 * ps3_os_area_get_av_multi_out - Returns the default video mode.
+0 −2
Original line number Diff line number Diff line
@@ -64,8 +64,6 @@ int ps3_set_rtc_time(struct rtc_time *time);

void __init ps3_os_area_save_params(void);
void __init ps3_os_area_init(void);
u64 ps3_os_area_get_rtc_diff(void);
void ps3_os_area_set_rtc_diff(u64 rtc_diff);

/* spu */

+0 −2
Original line number Diff line number Diff line
@@ -270,8 +270,6 @@ define_machine(ps3) {
	.init_IRQ			= ps3_init_IRQ,
	.panic				= ps3_panic,
	.get_boot_time			= ps3_get_boot_time,
	.set_rtc_time			= ps3_set_rtc_time,
	.get_rtc_time			= ps3_get_rtc_time,
	.set_dabr			= ps3_set_dabr,
	.calibrate_decr			= ps3_calibrate_decr,
	.progress			= ps3_progress,
+12 −14
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
 */

#include <linux/kernel.h>
#include <linux/platform_device.h>

#include <asm/rtc.h>
#include <asm/lv1call.h>
@@ -74,23 +75,20 @@ static u64 read_rtc(void)
	return rtc_val;
}

int ps3_set_rtc_time(struct rtc_time *tm)
unsigned long __init ps3_get_boot_time(void)
{
	u64 now = mktime(tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
		tm->tm_hour, tm->tm_min, tm->tm_sec);

	ps3_os_area_set_rtc_diff(now - read_rtc());
	return 0;
	return read_rtc() + ps3_os_area_get_rtc_diff();
}

void ps3_get_rtc_time(struct rtc_time *tm)
static int __init ps3_rtc_init(void)
{
	to_tm(read_rtc() + ps3_os_area_get_rtc_diff(), tm);
	tm->tm_year -= 1900;
	tm->tm_mon -= 1;
}
	struct platform_device *pdev;

unsigned long __init ps3_get_boot_time(void)
{
	return read_rtc() + ps3_os_area_get_rtc_diff();
	pdev = platform_device_register_simple("rtc-ps3", -1, NULL, 0);
	if (IS_ERR(pdev))
		return PTR_ERR(pdev);

	return 0;
}

module_init(ps3_rtc_init);
Loading