Skip to content

Commit

Permalink
MIPS: Add RTC support for Loongson1C board
Browse files Browse the repository at this point in the history
The patch adds RTC support for Loongson1C board, and enable the external
crystal when the RTC is first powered up.

Signed-off-by: Yang Ling <gnaygnil@gmail.com>
Cc: keguang.zhang@gmail.com
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/14214/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
gnaygnil authored and ralfbaechle committed Oct 4, 2016
1 parent 9f3b808 commit 60219c5
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 6 deletions.
1 change: 1 addition & 0 deletions arch/mips/include/asm/mach-loongson32/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,6 @@ void __init ls1x_clk_init(void);
void __init ls1x_dma_set_platdata(struct plat_ls1x_dma *pdata);
void __init ls1x_nand_set_platdata(struct plat_ls1x_nand *pdata);
void __init ls1x_serial_set_uartclk(struct platform_device *pdev);
void __init ls1x_rtc_set_extclk(struct platform_device *pdev);

#endif /* __ASM_MACH_LOONGSON32_PLATFORM_H */
13 changes: 13 additions & 0 deletions arch/mips/loongson32/common/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
#include <dma.h>
#include <nand.h>

#define LS1X_RTC_CTRL ((void __iomem *)KSEG1ADDR(LS1X_RTC_BASE + 0x40))
#define RTC_EXTCLK_OK (BIT(5) | BIT(8))
#define RTC_EXTCLK_EN BIT(8)

/* 8250/16550 compatible UART */
#define LS1X_UART(_id) \
{ \
Expand Down Expand Up @@ -66,6 +70,15 @@ void __init ls1x_serial_set_uartclk(struct platform_device *pdev)
p->uartclk = clk_get_rate(clk);
}

void __init ls1x_rtc_set_extclk(struct platform_device *pdev)
{
u32 val;

val = __raw_readl(LS1X_RTC_CTRL);
if (!(val & RTC_EXTCLK_OK))
__raw_writel(val | RTC_EXTCLK_EN, LS1X_RTC_CTRL);
}

/* CPUFreq */
static struct plat_ls1x_cpufreq ls1x_cpufreq_pdata = {
.clk_name = "cpu_clk",
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/loongson32/ls1c/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Makefile for loongson1B based machines.
# Makefile for loongson1C based machines.
#

obj-y += board.o
9 changes: 4 additions & 5 deletions arch/mips/loongson32/ls1c/board.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016 Ling Yang <gnaygnil@gmail.com>
* Copyright (c) 2016 Yang Ling <gnaygnil@gmail.com>
*
* 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
Expand All @@ -12,17 +12,16 @@
static struct platform_device *ls1c_platform_devices[] __initdata = {
&ls1x_uart_pdev,
&ls1x_eth0_pdev,
&ls1x_rtc_pdev,
};

static int __init ls1c_platform_init(void)
{
int err;

ls1x_serial_set_uartclk(&ls1x_uart_pdev);
ls1x_rtc_set_extclk(&ls1x_rtc_pdev);

err = platform_add_devices(ls1c_platform_devices,
return platform_add_devices(ls1c_platform_devices,
ARRAY_SIZE(ls1c_platform_devices));
return err;
}

arch_initcall(ls1c_platform_init);

0 comments on commit 60219c5

Please sign in to comment.